From dfd85e8389c44bda3cfccdfeb71240afc1897efc Mon Sep 17 00:00:00 2001 From: John Date: Mon, 15 Aug 2022 22:19:35 +0200 Subject: [PATCH] neo4j updates --- Databases/Neo4j/Applications with Python.md | 49 ++++++++++++++++++++ Databases/Neo4j/admin.md | 4 ++ _resources/connection-string.png | Bin 0 -> 25594 bytes 3 files changed, 53 insertions(+) create mode 100644 _resources/connection-string.png diff --git a/Databases/Neo4j/Applications with Python.md b/Databases/Neo4j/Applications with Python.md index 3d29502..4c8bdb9 100644 --- a/Databases/Neo4j/Applications with Python.md +++ b/Databases/Neo4j/Applications with Python.md @@ -3,4 +3,53 @@ title: Applications with Python updated: 2022-08-08 19:51:06Z created: 2022-08-08 19:50:49Z --- +```python +from neo4j import GraphDatabase +driver = GraphDatabase.driver("neo4j://localhost:7687", auth=("neo4j", "neo")) +``` + +![Connection String](../../_resources/connection-string.png) + +## Connection String + +Required: + +- Schema +- Initial server address +- port number (default 7687) + +schemas: + +- neo4j creates an unencrypted connection +- neo4j+s creates an encrypted connection and verifies certificate +- neo4j+ssc - Creates an encrypted connection no verification certificate + +Variations of the bolt scheme can be used to connect directly to a single DBMS (within a clustered environment or standalone). This can be useful if you have a single server configured for data science or analytics. + +- bolt creates an unencrypted connection directly to a single DBMS. +- bolt+s creates an encrypted connection directly to a single DBMS and verify the certificate. +- bolt+ssc creates an encrypted connection to directly to a single DBMS but will not attempt to verify the authenticity of the certificate. + +**Which scheme string is right?** + +You can verify the encryption level of your DBMS by checking the dbms.connector.bolt.enabled key in neo4j.conf. + +Always use the neo4j+s scheme when connecting to Neo4j Aura + +## Authentication Token + +```python +auth = (username, password) +``` + +## Additional Driver Configuration (Optional) + +Example + +```python +GraphDatabase.driver(uri, auth=auth, + max_connection_lifetime=30 * 60, + max_connection_pool_size=50, + connection_acquisition_timeout=2 * 60) +``` diff --git a/Databases/Neo4j/admin.md b/Databases/Neo4j/admin.md index 155b407..8ff7c90 100644 --- a/Databases/Neo4j/admin.md +++ b/Databases/Neo4j/admin.md @@ -38,3 +38,7 @@ ``` START DATABASE ``` + +## neo4j configuration file neo4j.conf + +dbms.default_database diff --git a/_resources/connection-string.png b/_resources/connection-string.png new file mode 100644 index 0000000000000000000000000000000000000000..0381383c42ffa5b4b1159a575792448607d31244 GIT binary patch literal 25594 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 literal 0 HcmV?d00001