Unable to connect NEO4J using neo4j python driver

1.7k Views Asked by At

I'm unable to connect to Neo4j using neo4j-python-driver version 5.3.0. Requirement is using Neo4j python driver to query NEO4J DB using cypher queries. It gives the error failed to connect to server even when the database is up and running and i can able to login and use through NEO4J Desktop. Getting below error

neo4j.exceptions.ServiceUnavailable: Couldn't connect to <URI>:7687 (resolved to ()):
[SSLCertVerificationError] Connection Failed. Please ensure that your database is listening on the correct host and port and that you have enabled encryption if required. Note that the default encryption setting has changed in Neo4j 4.0. See the docs for more information. Failed to establish encrypted connection. (code 1: Operation not permitted)

Note : URI hided in the above error.

I have added the exception to Ignores certificate verification issue, but it won't solve the issue.

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

Appreciate your help to resolve the issue.

i'm connecting via below snippet

from neo4j import GraphDatabase
import urllib3

#Ignores certificate verification issue
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


# Initialize connection to database
driver = GraphDatabase.driver('bolt+s://<URI>:7687', auth=(',username', '<password'))


query = 'match (n:Event{name:"test"}) return n'

#Run Cypher query
with driver.session() as session:
    info = session.run(query)
    for item in info:
        print(item)
3

There are 3 best solutions below

0
On

Have you tried py2neo? I use below with dev running in docker and prod running Aura.

from py2neo import Graph
self.graph = Graph(os.getenv('DB_URI'), auth=(
            os.getenv('DB_USER'), os.getenv('DB_PASS')))

DB_URI is 'neo4j://0.0.0.0:7687' on dev and 'neo4j+s://xxxx' on prod

3
On

No way to know how you are connecting, but we do:

from neo4j import GraphDatabase
address="bolt://localhost:7687"
auth=('neo4j', "password")
driver = GraphDatabase.driver(address, auth=auth, encrypted=False)
....
0
On

One reason for this to happen is different servers running. For example if you are running the neo4j on your local machine and accessing this DB from google-colab(which is essentialy a different server than your localhost), you might face this error, as it was case for me. To solve this issue, make sure your localhost is actually localhost. One way is to make a python script and run it locally. It will solve this issue. Remember colab shows [error 111].

Second method would be to replicate address. You may also look at the ngrok here which may help you impersonate IP.