-
[Neo4j + Python] Python에서 Neo4j DB 접속하고 쿼리하기Data & ML & AI/GraphDB(Neo4j) 2022. 8. 28. 21:37반응형
프로젝트 진행을 간소화 하기 위해 Neo4j DB의 노드와 엣지를 만드는걸 자동화 하고싶습니다.
하지만
1) csv파일을 다운받아서
2) Neo4j desktop을 통해 csv를 import해주고,
3) csv를 죄다 로드한 뒤,
4) 그 중 필요한 것들끼리만 관계를 설정해 주고....
매우 번거로워 보입니다.
Neo4j csv파일 열기(LOAD CSV)
많은 수의 원본데이터, raw데이터는 csv, 엑셀과 같은 테이블 형식의 데이터입니다. 처음부터 그래프DB로 시작하는 극히 드문 경우가 아니라면 테이블 형식의 데이터를 그래프DB로 옮겨와야 한다
brain-nim.tistory.com
물론 저것만으로 충분히 할 수 있는 것은 많겠지만, 차라리 다른 프로그래밍 언어를 통해서 제어하는 것이 나아보입니다.
파이썬과 Neo4j를 연동해봅시다.
0. 주의
- 근래의 많은 라이브러리들이 그렇듯, 아래의 내용 역시 python2에서는 support되지 않습니다. (https://neo4j.com/developer/python/)
- 접속하려는 DB가 당연히 켜져있어야 접속 가능합니다.
Neo4j Desktop을 이용한다면 해당 DBMS의 [Start]버튼을 눌러 DBMS를 ACTIVE 상태로 만들어주세요.
Start 버튼을 눌러 ACTIVE 상태로 만들어줘야 접속 가능합니다. 1. neo4j 라이브러리 설치
pip install neo4j
정상적으로 설치가 되었다면 python에서 아래의 코드를 통해 정상설치 여부를 확인할 수 있습니다.
from neo4j import __version__ as neo4j_version print(neo4j_version) # 4.4.5
2. Python에서 Neo4j 세션 연결하기
from neo4j import GraphDatabase # driver = GraphDatabase.driver(uri, auth=(user, password)) driver = GraphDatabase.driver('bolt://localhost:7687', auth=('neo4j', '0000')) session = driver.session()
Neo4j 설치과정에서 port를 변경하신 적이 없다면, 일반적으로 port 번호는 7687, user는 neo4j입니다.
Neo4j Browser창(DBMS의 [Open]버튼을 누르면 새로 뜨는 창)에서 정보를 확인할 수 있습니다.
비밀번호를 제외한 나머지 접속정보를 확인할 수 있습니다. 3. Python과 Neo4j DB가 잘 연결 되었는지 최종 확인하기
q = 'MATCH (n) RETURN n LIMIT 5' nodes = session.run(q) for node in nodes: print(node) # <Record n=<Node id=0 labels=frozenset({'Movie'}) properties={'tagline': 'Welcome to the Real World', 'title': 'The Matrix', 'released': 1999}>> # <Record n=<Node id=1 labels=frozenset({'Person'}) properties={'born': 1964, 'name': 'Keanu Reeves'}>> # <Record n=<Node id=2 labels=frozenset({'Person'}) properties={'born': 1967, 'name': 'Carrie-Anne Moss'}>> # <Record n=<Node id=3 labels=frozenset({'Person'}) properties={'born': 1961, 'name': 'Laurence Fishburne'}>> # <Record n=<Node id=4 labels=frozenset({'Person'}) properties={'born': 1960, 'name': 'Hugo Weaving'}>> session.close()
Neo4j Browser에서 실행한 쿼리와 동일한 결과가 나타났습니다. 잘 연결되었군요! 참조문서
- https://neo4j.com/developer/python/
- https://pinglab-intern.github.io/SamirDocs/instructions/Query_Neo4j_Python/
반응형'Data & ML & AI > GraphDB(Neo4j)' 카테고리의 다른 글
[Neo4j + Python] Python에서 Neo4j 쿼리 결과 읽기 (0) 2022.08.29 Neo4j csv파일 열기(LOAD CSV) (0) 2022.07.11 Neo4j 제약조건 생성하기(CONSTRAINT: unique, Not Null) (0) 2022.07.07 Neo4j Cypher 기본구문(Create, Match, Merge 절) (0) 2022.06.09 Neo4j의 기본 구성요소(Elements of Neo4j; study with Movies Project Tutorial) (0) 2022.06.09