wisePocket

[Python][Database] MongoDB Atlas(Cloud)와 Python 연결 dnspython , pymongo 라이브러리 + SSL: CERTIFICATE_VERIFY_FAILED 에러 해결 본문

Python&Flask Tutorials, AWS EB/3rd WEEK Python, Crawling, MongoDB

[Python][Database] MongoDB Atlas(Cloud)와 Python 연결 dnspython , pymongo 라이브러리 + SSL: CERTIFICATE_VERIFY_FAILED 에러 해결

ohnyong 2023. 7. 5. 14:27

내 로컬 PC에 설치된 Python <->  웹 클라우드 서비스에 위치한 MongoDB 

이 두개를 연결하고 데이터를 주고 받는, 상호 제어 할 수 있도록 하는 것이 이번 실습이다.

 

우선 Python에서 웹에 있는 MongoDB를 조작하기 위해서는 

조작 할 수 있는 "라이브러리"가 필요하다.

 

  • dnspython
  • pymongo

 

1. dnspython, pymongo 라이브러리 설치

VSCode에서 venv 설정된 터미널에서 dnspython을 설치한다.

pip install dnspython

마찬가지로 VSCode 터미널에서 pymongo를 설치한다

pip install pymongo

 

2. pymongo 를 사용해서 DB에 접속해보자

pymong로 DB를 연결하는 코드이다.

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta

URL은 MongoDB Atlas에 연결 준비를 한 나의 DB 주소를 입력해야 한다.

Atlas에 들어가서 준비해둔 DB에서 Connect 버튼을 누르고 다음과 같이 세팅한다.

Connect to your application>Drivers
  • Driver : Python
  • Version : 3.6 or later
  • Add your connection string into your application code에 나타난 URL을 위 기본 코드의 URL에 입력하자.
  • URL에 <password> 부분을 DB 연결 준비 할 때 기록했던 비밀번호를 사용 (*본인은 test)

 

 

3. DB가 연결됐는지 데이터를 넣어보자

MongoDB는 Dictionary를 만들고 insert문으로 넣어주면 된다.

from pymongo import MongoClient
client = MongoClient('mongodb+srv://ohnyong:test@cluster0.lu7mz8j.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

# Dictionary 선언
doc = {
    'name':'영수',
    'age':24
}

# insert문
db.users.insert_one(doc)

 

SSL: CERTIFICATE_VERIFY_FAILED 에러 발생 및 해결

*해당 코드를 실행하니 DB와 커넥션이 실패됐고 insert문까지 실행되지 않았다.

*검색 결과, 사용하는 인터넷 환경에 따라 보안 관련 추가 설정이 필요

 

1) certifi 라이브러리 설치

 

pip install certifi

2)certifi 라이브러리 임포트

3)ca = certifi.where() 추가

4)client 커넥션 스크립트에서 'URL' 뒤에 ' ,tlsCAFile=ca' 추가

from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://ohnyong:test@cluster0.lu7mz8j.mongodb.net/?retryWrites=true&w=majority',tlsCAFile=ca)
db = client.dbsparta

# Dictionary 선언
doc = {
    'name':'영수',
    'age':24
}

# insert문
db.users.insert_one(doc)

이제 정상적으로 Atlas와 연결되었으며 실행 오류가 나타나지 않았다.

insert한 DDL또한 정상적으로 작동하는 것을 확인했다.

 


*참고자료

https://spartacodingclub.kr/community/fastqna/all/6344bc795de76672ffc276cb/Monggo%20DB%20-%20Atlas%20%EC%97%B0%EA%B2%B0%EC%9D%B4%20%EC%95%88%EB%90%A9%EB%8B%88%EB%8B%A4

 

스파르타코딩클럽 커뮤니티 | 스파르타코딩클럽 수강생이라면 누구나

나만 놓칠 수 없는 이야기들이 가득한 자유게시판, 코딩하다 막히면 바로 질문하는 즉문즉답, 개발일지 모음까지

spartacodingclub.kr

 


 

해당 스터디는 아래 깃을 통해 업데이트 되고 있습니다.

https://github.com/yzpocket/Sparta99training

 

GitHub - yzpocket/Sparta99training

Contribute to yzpocket/Sparta99training development by creating an account on GitHub.

github.com