나의 기록_나의 다이어리

[PyCharm][mongoDB]파이참으로 몽고DB에 데이터 insert 시, 에러코드 해결하기 (certifi 패키지) 본문

코딩/국비지원 개발인강 (스파르타코딩클럽)

[PyCharm][mongoDB]파이참으로 몽고DB에 데이터 insert 시, 에러코드 해결하기 (certifi 패키지)

NayDiary 2022. 11. 8. 11:02
반응형
SMALL

1. mongoDB에 데이터 insert를 하려고 했더니 오류가 발생했다.

1) 전체 오류 코드

/Users/dyudyu/Desktop/sparta/pythonprac/venv/bin/python /Users/dyudyu/Desktop/sparta/pythonprac/dbprac.py

Traceback (most recent call last):

 File "/Users/dyudyu/Desktop/sparta/pythonprac/dbprac.py", line 10, in <module>

  db.users.insert_one(doc)

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/collection.py", line 621, in insert_one

  self._insert_one(

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/collection.py", line 562, in _insert_one

  self.__database.client._retryable_write(acknowledged, _insert_command, session)

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1475, in _retryable_write

  with self._tmp_session(session) as s:

 File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/contextlib.py", line 113, in __enter__

  return next(self.gen)

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1757, in _tmp_session

  s = self._ensure_session(session)

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1740, in _ensure_session

  return self.__start_session(True, causal_consistency=False)

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1685, in __start_session

  self._topology._check_implicit_session_support()

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/topology.py", line 538, in _check_implicit_session_support

  self._check_session_support()

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/topology.py", line 554, in _check_session_support

  self._select_servers_loop(

 File "/Users/dyudyu/Desktop/sparta/pythonprac/venv/lib/python3.8/site-packages/pymongo/topology.py", line 238, in _select_servers_loop

  raise ServerSelectionTimeoutError(

pymongo.errors.ServerSelectionTimeoutError: ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108),ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108),ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108), Timeout: 30s, Topology Description: <TopologyDescription id: 6369aae3dde52dc9d79e9cb3, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>, <ServerDescription ('ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>, <ServerDescription ('ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>]>

2) 핵심 오류 코드

  • error라는 글씨가 있는 부분을 중심으로 구글링하면 어떤 오류인지와 어떻게 해결 가능한지 찾을 수 있다.
  • raise ServerSelectionTimeoutError(

    pymongo.errors.ServerSelectionTimeoutError: ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108),ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108),ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108), Timeout: 30s, Topology Description: <TopologyDescription id: 6369aae3dde52dc9d79e9cb3, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>, <ServerDescription ('ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-01.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>, <ServerDescription ('ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-xz6sra0-shard-00-02.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')>]>
pymongo.errors.ServerSelectionTimeoutError: ac-xz6sra0-shard-00-00.mx1d7rq.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:

 

3) 사용하고 있는 인터넷 환경에 따라 보안 관련 추가 설정을 해주어야 한다고 한다. certifi 패키지를 설치해야 한다.

 

2. 해결 방법

1) 가장 먼저 certifi 패키지를 설치한다.

2) 아래 코드를 입력하고 실행시킨다.

from pymongo import MongoClient
import certifi 
ca = certifi.where()


client = MongoClient('본인 mongoDB url', tlsCAFile = ca)
db = client.dbsparta


doc = {
    'name':'bob',
    'age':27
}


db.users.insert_one(doc)

 

3) 성공

잠시 기다렸다가, 아래 코드가 뜨면 성공한거다.

종료 코드 0(으)로 완료된 프로세스

 

3. mongoDB에서 데이터 확인하기

이제 DB에 insert가 잘됐는지 확인해봐야겠죠?

 

1) mongoDB에서 'Browse Collections' 클릭

2) users 콜렉션(Collections)에 데이터가 잘 들어갔음!

반응형
LIST
Comments