Skip to content

Commit a011720

Browse files
committed
Update the examples for the documentation.
1 parent 20cbad8 commit a011720

19 files changed

+840
-0
lines changed

test/examples/__main__.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
22+
if __name__ == "__main__":
23+
from os.path import dirname
24+
from test.tools import run_tests
25+
run_tests(dirname(__file__))
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::autocommit-transaction-import[]
22+
from neo4j.v1 import Session;
23+
from base_application import BaseApplication
24+
# end::autocommit-transaction-import[]
25+
26+
class AutocommitTransactionExample(BaseApplication):
27+
def __init__(self, uri, user, password):
28+
super().__init__(uri, user, password)
29+
30+
# tag::autocommit-transaction[]
31+
def add_person(self, name):
32+
session = self._driver.session()
33+
session.run( "CREATE (a:Person {name: $name})", {"name": name} )
34+
# end::autocommit-transaction[]

test/examples/base_application.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
from neo4j.v1 import GraphDatabase
22+
23+
class BaseApplication:
24+
def __init__(self, uri, user, password):
25+
self._driver = GraphDatabase.driver( uri, auth=( user, password ) )
26+
27+
def close(self):
28+
self._driver.close();
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::basic-auth-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::basic-auth-import[]
24+
25+
class BasicAuthExample:
26+
# tag::basic-auth[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password))
29+
# end::basic-auth[]
30+
31+
def close(self):
32+
self._driver.close()
33+
34+
def can_connect(self):
35+
record_list = list(self._driver.session().run("RETURN 1"))
36+
return int(record_list[0][0]) == 1
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-connection-timeout-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-connection-timeout-import[]
24+
25+
class ConfigConnectionTimeoutExample:
26+
# tag::config-connection-timeout[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver( uri, auth=( user, password ),
29+
Config.build().withConnectionTimeout( 15, SECONDS ).toConfig() )
30+
# end::config-connection-timeout[]
31+
32+
def close(self):
33+
self._driver.close();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-max-retry-time-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-max-retry-time-import[]
24+
25+
class ConfigMaxRetryTimeExample:
26+
# tag::config-max-retry-time[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password),
29+
Config.build().withMaxTransactionRetryTime( 15, SECONDS ).toConfig() )
30+
# end::config-max-retry-time[]
31+
32+
def close(self):
33+
self._driver.close();
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-trust-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-trust-import[]
24+
25+
class ConfigTrustExample:
26+
# tag::config-trust[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password),
29+
Config.build().withTrustStrategy( Config.TrustStrategy.trustSystemCertificates() ).toConfig() )
30+
# end::config-trust[]
31+
32+
def close(self):
33+
self._driver.close();
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::config-unencrypted-import[]
22+
from neo4j.v1 import GraphDatabase
23+
# end::config-unencrypted-import[]
24+
25+
class ConfigUnencryptedExample:
26+
# tag::config-unencrypted[]
27+
def __init__(self, uri, user, password):
28+
self._driver = GraphDatabase.driver(uri, auth=(user, password), encrypted=False)
29+
# end::config-unencrypted[]
30+
31+
def close(self):
32+
self._driver.close();
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::custom-auth-import[]
22+
from neo4j.v1 import GraphDatabase;
23+
# end::custom-auth-import[]
24+
25+
class CustomAuthExample:
26+
# tag::custom-auth[]
27+
def __init__(self, uri, principal, credentials, realm, scheme, parameters):
28+
self._driver = GraphDatabase.driver( uri, auth=(principal, credentials, realm, scheme, parameters))
29+
# end::custom-auth[]
30+
31+
def close(self):
32+
self._driver.close()
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env python
2+
# -*- encoding: utf-8 -*-
3+
4+
# Copyright (c) 2002-2017 "Neo Technology,"
5+
# Network Engine for Objects in Lund AB [http://neotechnology.com]
6+
#
7+
# This file is part of Neo4j.
8+
#
9+
# Licensed under the Apache License, Version 2.0 (the "License");
10+
# you may not use this file except in compliance with the License.
11+
# You may obtain a copy of the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS,
17+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
# See the License for the specific language governing permissions and
19+
# limitations under the License.
20+
21+
# tag::cypher-error-import[]
22+
from neo4j.v1 import GraphDatabase, ClientError
23+
from base_application import BaseApplication
24+
# end::cypher-error-import[]
25+
26+
class CypherErrorExample(BaseApplication):
27+
def __init__(self, uri, user, password):
28+
super().__init__(uri, user, password)
29+
30+
# FIXME: this doesn't work because read_transaction behaves
31+
# differently than in Java, so this throws a ClientError
32+
33+
# tag::cypher-error[]
34+
def get_employee_number(self, name):
35+
with self._driver.session() as session:
36+
return session.read_transaction(lambda tx: self.select_employee(tx, name))
37+
38+
def select_employee(self, tx, name):
39+
try:
40+
record_list = list(tx.run("SELECT * FROM Employees WHERE name = $name", {"name": name}))
41+
return int(record_list[0]["employee_number"])
42+
except ClientError as e:
43+
print(e.message)
44+
return -1
45+
# end::cypher-error[]

0 commit comments

Comments
 (0)