MongoDB를 이용하기 위한 라이브러리로, MongoDB를 로컬 혹은 클라우드 환경에 설치 및 연결하여 사용할 수 있다.
pip install pymongo
client = MongoClient("mongodb+srv://admin:admin@cluster0.uuxjj5e.mongodb.net/?retryWrites=true&w=majority", tlsCAFile=certifi.where())
client = MongoClient(host='localhost', port=27017)
db = client.test
db = client.['test']
collection = db.sample
collection = db['sample']
DB에 존재하는 Collection의 목록을 전부 확인할 수 있다.
db.list_collection_names()
MongoDB는 Data를 JSON style로 저장한다. Python Dictionary를 활용하면 매우 편리하다.
doc = {
'name' : name_receive,
'comment' : comment_receive
}
insert_one() 함수를 통해 간단하게 DB에 document를 추가할 수 있다.
db.sample.insert_one(doc)
insert_many() 함수를 통해 여러 document를 한번에 추가할 수도 있다.
new_posts = [
{
'name' : name_receive,
'comment' : comment_receive
},
{
'name' : name_receive2,
'comment' : comment_receive2
}
]
db.sample.insert_many(new_posts)
조건과 일치하는 모든 Document를 찾아 리턴한다.
post_list = list(db.sample.find({'name':"jay"},{'_id':False}))
위 구문에서, {'_id':False}를 추가하면 자동으로 생성된 id 값을 제외하고 불러올 수 있다.
db.sample.count_documents({'name': "jay"})
pymongo.errors.ServerSelectionTimeoutError: ac-wecjdm3-shard-00-02.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122),ac-wecjdm3-shard-00-01.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122),ac-wecjdm3-shard-00-00.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122), Timeout: 30s, Topology Description: <TopologyDescription id: 633ff0b1095b2763797c9d80, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-wecjdm3-shard-00-00.uuxjj5e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-wecjdm3-shard-00-00.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122)')>, <ServerDescription ('ac-wecjdm3-shard-00-01.uuxjj5e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-wecjdm3-shard-00-01.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122)')>, <ServerDescription ('ac-wecjdm3-shard-00-02.uuxjj5e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-wecjdm3-shard-00-02.uuxjj5e.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1122)')>]>
(.venv) ...dir...> python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'...dir...\\.venv\\Scripts\\python.exe'
>>> exit()
확인 결과 이상 없음.
https에 요청을 보낼 때, 유효성 검증을 하는 중에 발생하는 에러. 인증서 확인이 필요한데, 특정 인증서 없이 접근할 수 있도록 하는 방법이 필요.
Certifi 모듈을 사용해 인증서 적용. 그냥 별 정보도 없는 쓸데없는 인증서임.
import certifi
client = MongoClient("mongodb+srv://admin:admin@cluster0.uuxjj5e.mongodb.net/?retryWrites=true&w=majority", tlsCAFile=certifi.where())
마지막에 tlsCAFile=certifi.where()만 추가해주면 된다.