본문 바로가기
개발 이야기/Python

Python_pymongo 간단 사용법

by 농개 2019. 2. 12.

Python으로 Mongodb를 커넥션하여 사용할 때 가장 많이 사용하는 라이브러리가 바로 pymongo이다.

mongodb 기능을 많이 사용 할 수 있고(Index, Aggregate, ClientSession과 Transaction 등등)

문서도 잘 정리되어 있는 편이다.


https://api.mongodb.com/python/current/






01. pip 명령어로 pymongo 설치

아래 명령어로 설치 할 수 있다.
1
python -m pip install pymongo
cs



* 공식문서에 보면 bson 패키지 설치하지 말라고 한다. pymongo가 기본적으로 bson 패키지를 내포하고 있고, 만약 설치하게 되면 서드파티 모듈 의존성 문제가 생길수 있다고 한다.






02. 코드 작성

간단하게 아래와 같은 코드를 작성해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from pymongo import MongoClient
import traceback
 
host = 'localhost'
port = 27017
 
 
def main():
    try:
        client = MongoClient(
            host=host,
            port=port
            # replica=replica set
            # username=user
            # password=password
            # authSource=auth database
        )
        
        db = client['mydb'## db name
 
        print('MongoDB Connected.')
    except Exception as e:
        print(traceback.format_exc())
    finally:
        client.close()
        print('MongoDB Closed.')
 
if __name__ == "__main__":
    main()
cs


Host와 Port 번호를 정의하고, MongoClient()를 이용해서 커넥션을 맺고 client.close()로 커넥션을 끊는 코드이다.

(traceback 은 error 로그랑 error 발생 지점을 표시하기 위해 사용)


host, port외에 replica, username, password, authSource 등을 설정 할 수도 있다. 

client['DB이름'] 또는 client.DB이름으로 db를 가져오고, 본격적으로 사용할 수 있게 된다.






03. find()

위 스크립트 코드에서 두줄만 추가 해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from pymongo import MongoClient
import traceback
 
host = 'localhost'
port = 27017
 
 
def main():
    try:
        client = MongoClient(
            host=host,
            port=port
            # replica=replica set
            # username=user
            # password=password
            # authSource=auth database
        )
        
        db = client['mydb'## db name
 
        print('MongoDB Connected.')
 
        cursor = db.member.find() 
        print(cursor)
 
    except Exception as e:
        print(traceback.format_exc())
    finally:
        client.close()
        print('MongoDB Closed.')
 
if __name__ == "__main__":
    main()
cs


db.member.find()

mydb라는 database의 member collection을 조회한다.

그리고 실행 시켜보면...


1
2
3
4
5
jckang@jckang:~/test/pymongo_test$ python script.py 
MongoDB Connected.
<pymongo.cursor.Cursor object at 0x7f1022e77a10>
MongoDB Closed.
 
cs



Cursor 객체가 반환 되어 print함수로 찍어보니 위와 같이 찍힌다.

document를 확인하려면 아래와 같이 list로 감싸주면 확인 가능.


1
2
3
4
5
6
7
...
        cursor = db.member.find({}) 
        print(list(cursor))
 
    except Exception as e:
        print(traceback.format_exc())
...
cs



1
2
3
4
5
jckang@jckang:~/test/pymongo_test$ python script.py 
MongoDB Connected.
[{u'age': 18.0, u'_id': ObjectId('5c2720a31e5aee87647b452a'), u'name': u'Jorge'}]
MongoDB Closed.
 
cs






초간단하게(?) pymongo로 Connection 해보기 끝.