맛동산

OrientDB with Python - pyorient 사용하기 본문

DB/OrientDB

OrientDB with Python - pyorient 사용하기

오지고지리고알파고포켓몬고 2017. 12. 3. 20:39

지난글(OrientDB with Python - OrientDB studio 사용)에서 간단한 studio 사용법을 다뤄봤습니다.

이번엔 pyorient를 통해서 파이썬에서 OrientDB에 연결하고 쿼리를 실행하는 내용을 작성하겠습니다.


pyorient를 사용하기위해 터미널(명령 프롬프트)에서 pip install pyorient를 입력하여 pyorient를 설치합니다.

참고로 저는 관리자 권한으로 설치했습니다.


 
import pyorient

id = "your id"
pw = "your pw"

def showResult(results):
    for r in results:
        print(r)

# 클라이언트 초기화
client = pyorient.OrientDB("localhost", 2424)
session_id = client.connect(id, pw)

# DB 목록 보기
print(client.db_list().databases)
# {'o2': 'plocal:/Users/darr/OrientDB/databases/o2', 'pytest': 'plocal:/Users/darr/OrientDB/databases/pytest', 'GratefulDeadConcerts': 'plocal:/Users/darr/OrientDB/databases/GratefulDeadConcerts', 'CorpusTest': 'plocal:/Users/darr/OrientDB/databases/CorpusTest'}

# DB 열기
client.db_open("pytest", id, pw)

# select
results = client.command('select * from test1')
showResult(results)
#{'@test1':{'name': '김철수'},'version':1,'rid':'#26:0'}
#{'@test1':{'name': '김영희', 'age': 23},'version':1,'rid':'#27:0'}

print()
print(results[0]._rid) # #26:0
print(results[0]._version) # 1
print(results[0].oRecordData) # {'name': '김철수'}

#insert
client.command("insert into test1(name, addr) values('%s','%s')"%('박근혜','503'))

print()
results = client.command('select * from test1')
showResult(results)
#{'@test1':{'name': '김철수'},'version':1,'rid':'#26:0'}
#{'@test1':{'name': '박근혜', 'addr': '503'},'version':1,'rid':'#26:1'}
#{'@test1':{'name': '김영희', 'age': 23},'version':1,'rid':'#27:0'}

client.close()


설치가 완료됐다면 미리 작성한 코드를 보며 설명하겠습니다.


line 6 : showResult 함수는 client로 select문을 호출 했을 때 row별로 받아오기 때문에 콘솔에서 편하게 보기위해서 작성한 함수입니다.


line 11 : pyorient.OrientDB에 OrientDB 서버주소와 port를 입력하고 세션을 생성합니다.


line 15 : client.db_list()를 수행하면 db 목록을 볼 수 있습니다.


line 19 : 사용할 db를 엽니다. 지난 과정을 똑같이 따라하셨다면 pytest가 있을텐데, pytest로 진행해보겠습니다.


line 22 : client 객체에서 command 메소드를 통해 query를 호출할 수 있습니다. OrientDB는 여러가지 문법을 지원하며, oracle이나 mysql mariadb를 사용해보신분은 같은 방식으로 사용하실 수 있습니다.


line 24 : 결과를 출력해보면 다음과 같은 값을 볼 수 있습니다.


line 28 : select문의 결과는 다음과 같은 방법으로 접근할 수 있습니다.(select문의 결과는 OrientRecord 타입이기 때문에 dictionary 자료형과는 접근방식이 조금 다릅니다.)


line 33: insert문 역시 RDBMS 문법과 동일하며 전에 설명했듯이 정의되지 않은 field에 대해서도 insert를 진행할 수 있고, line 37을 통해 그 결과를 확인할 수 있습니다.


마지막으로 close 메소드를 통해 connection을 종료합니다.



여기까지 pyorient를 통해 OrientDB를 사용하는 방법을 알아봤습니다.

update, delete 역시 동일하게 사용하실 수 있습니다.


다음에는 pyorient로 crud를 구성해보고 query_async 메소드를 사용하는 코드를 작성해보겠습니다.

Comments