0. 들어가며
Graph database neo4j는 python에서 DB에 접근할 수 있는 driver인 neo4j-python-driver 를 제공한다.
neo4j-python-driver 사용법을 작성한 글이다.
1. 설치
pip install neo4j
2. Driver 불러오기
from neo4j import GraphDatabase
uri = "bolt://localhost:7687"
user = "neo4j"
password = "neo4j"
driver = GraphDatabase.driver(uri, auth=(username, password))
실제 개발에서는 보안을 위해 접속 정보를 환경 변수로 처리하는 것이 좋다.
3. Query 실행
query = '''
MERGE (n:Person {name: 'yongsun', age: 30})
RETURN n
'''
results, summary, keys = driver.execute_query(query, database_='neo4j')
results 예시
database를 명시하는 것이 좋다고 한다.
default database: neo4j
It is recommended to always specify the database explicitly when possible. This allows the driver to work more efficiently, as it will not have to resolve the default database first.
reference
4. Node
node = results[0]['n']
node 예시
RETURN 명령어에서 입력한 key 값으로 Node 객체에 접근할 수 있다.
주요 정보
node.element_id
: DB에서 사용하는 global node id.
4:{database_id}:{node_id}
node를 삭제할 경우 새로 생성된 노드에서 재사용될 수 있으니 주의가 필요하다.
reference
node.labels
: node의 labels.
dict(node)
: node의 property를 dictionary로 변환.
5. Query Placeholder
# 예시 1
query = '''
MATCH (n:Person {name: $name})
RETURN n
'''
results, summary, keys = driver.execute_query(query, name='yongsun', database_='neo4j')
# 예시 2
query = '''
MATCH (n)
WHERE ID(n) = $node_id
RETURN n
'''
results, summary, keys = driver.execute_query(query, node_id=0, database_='neo4j')
placeholder를 사용하면 쿼리에 변수를 넣을 수 있다.
label은 placeholder 사용이 안된다.
6. 마치며
neo4j-python-driver를 사용해 python에서 neo4j DB에 접근할 수 있다.
다음 기회에 async, result_transformer_ 와 같은 기능들을 다룰 예정이다.
Reference