본문 바로가기

dev

Neo4j Python library 사용법

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

'dev' 카테고리의 다른 글

Sentinel Hub API로 위성 사진 수집하기  (0) 2023.07.18
GNU screen 사용법  (0) 2023.05.18
neo4j docker로 배포하기  (0) 2023.05.17
GPU 서버 개발 환경 구축  (0) 2023.05.16