Skip to content

Commit 8a51831

Browse files
author
Sandbox 🤖
committed
Triggered by direct commit. Origin: neo4j-contrib/sandbox-code-updater@b98d7fe
1 parent d1bfff5 commit 8a51831

File tree

2 files changed

+35
-46
lines changed

2 files changed

+35
-46
lines changed

code/go/example.go

+24-33
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
package main
44

55
import (
6+
"context"
67
"fmt"
7-
"github.com/neo4j/neo4j-go-driver/v4/neo4j"
8-
"io"
8+
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
99
"reflect"
1010
)
1111

@@ -19,46 +19,37 @@ func main() {
1919
}
2020
}
2121

22-
func runQuery(uri, database, username, password string) (result []string, err error) {
23-
driver, err := neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""))
22+
func runQuery(uri, database, username, password string) (_ []string, err error) {
23+
ctx := context.Background()
24+
driver, err := neo4j.NewDriverWithContext(uri, neo4j.BasicAuth(username, password, ""))
2425
if err != nil {
2526
return nil, err
2627
}
27-
defer func() {err = handleClose(driver, err)}()
28-
session := driver.NewSession(neo4j.SessionConfig{AccessMode: neo4j.AccessModeRead, DatabaseName: database})
29-
defer func() {err = handleClose(session, err)}()
30-
results, err := session.ReadTransaction(func(transaction neo4j.Transaction) (interface{}, error) {
31-
result, err := transaction.Run(
32-
`
33-
MATCH (l:Location {address:$address})<-[r:OCCURRED_AT]-(c:Crime)
34-
RETURN c.date as crimeDate
35-
`, map[string]interface{}{
36-
"address": "Piccadilly",
37-
})
28+
defer func() { err = handleClose(ctx, driver, err) }()
29+
query := " MATCH (l:Location {address:$address})<-[r:OCCURRED_AT]-(c:Crime)
30+
RETURN c.date as crimeDate
31+
params := map[string]any{"address": "Piccadilly"}
32+
result, err := neo4j.ExecuteQuery(ctx, driver, query, params,
33+
neo4j.EagerResultTransformer,
34+
neo4j.ExecuteQueryWithDatabase(database),
35+
neo4j.ExecuteQueryWithReadersRouting())
36+
if err != nil {
37+
return nil, err
38+
}
39+
crimeDates := make([]string, len(result.Records))
40+
for i, record := range result.Records {
41+
// this assumes all actors have names, hence ignoring the 2nd returned value
42+
name, _, err := neo4j.GetRecordValue[string](record, "crimeDate")
3843
if err != nil {
3944
return nil, err
4045
}
41-
var arr []string
42-
for result.Next() {
43-
value, found := result.Record().Get("crimeDate")
44-
if found {
45-
arr = append(arr, value.(string))
46-
}
47-
}
48-
if err = result.Err(); err != nil {
49-
return nil, err
50-
}
51-
return arr, nil
52-
})
53-
if err != nil {
54-
return nil, err
46+
crimeDates[i] = name
5547
}
56-
result = results.([]string)
57-
return result, err
48+
return crimeDates, nil
5849
}
5950

60-
func handleClose(closer io.Closer, previousError error) error {
61-
err := closer.Close()
51+
func handleClose(ctx context.Context, closer interface{ Close(context.Context) error }, previousError error) error {
52+
err := closer.Close(ctx)
6253
if err == nil {
6354
return previousError
6455
}

code/python/example.py

+11-13
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
# pip3 install neo4j-driver
1+
# pip3 install neo4j
22
# python3 example.py
33

44
from neo4j import GraphDatabase, basic_auth
55

6-
driver = GraphDatabase.driver(
7-
"neo4j://<HOST>:<BOLTPORT>",
8-
auth=basic_auth("<USERNAME>", "<PASSWORD>"))
9-
106
cypher_query = '''
117
MATCH (l:Location {address:$address})<-[r:OCCURRED_AT]-(c:Crime)
128
RETURN c.date as crimeDate
139
'''
1410

15-
with driver.session(database="neo4j") as session:
16-
results = session.read_transaction(
17-
lambda tx: tx.run(cypher_query,
18-
address="Piccadilly").data())
19-
for record in results:
20-
print(record['crimeDate'])
21-
22-
driver.close()
11+
with GraphDatabase.driver(
12+
"neo4j://<HOST>:<BOLTPORT>",
13+
auth=("<USERNAME>", "<PASSWORD>")
14+
) as driver:
15+
result = driver.execute_query(
16+
cypher_query,
17+
address="Piccadilly",
18+
database_="neo4j")
19+
for record in result.records:
20+
print(record['crimeDate'])

0 commit comments

Comments
 (0)