Docs Menu

Docs Home애플리케이션 개발Python 드라이버PyMongo

연결 대상 선택

이 페이지의 내용

  • 개요
  • Atlas
  • 로컬 배포
  • 복제본 세트
  • 초기화
  • 문제 해결
  • MongoDB Server, 유선 버전 X, PyMongo Y가 필요하다고 보고
  • 자동 재연결
  • API 문서

이 가이드에서는 연결 string 과 MongoClient 객체를 사용하여 다양한 유형의 MongoDB deployment에 연결하는 방법을 배울 수 있습니다.

MongoDB 에서 deployment에 Atlas 연결하려면 연결 에 다음 요소를 string 포함하세요.

  • Atlas cluster의 URL

  • MongoDB 사용자 이름

  • MongoDB 비밀번호

그런 다음 연결 string 을 MongoClient 생성자에 전달합니다.

Atlas 드라이버 연결 가이드 에 따라 연결 string 을 검색합니다.

Atlas 에 연결할 때 Stable API 클라이언트 옵션을 사용하여 Atlas 를 새 버전의 MongoDB Server 로 업그레이드할 때 호환성이 손상되는 변경을 방지하는 것이 좋습니다. Stable API 기능 에 학습 보려면 Stable API 페이지를 참조하세요.

다음 코드는 PyMongo를 사용하여 Atlas cluster에 연결하는 방법을 보여줍니다. 또한 이 코드는 server_api 옵션을 사용하여 stable API 버전을 지정합니다.

from pymongo import MongoClient
from pymongo.server_api import ServerApi
# Replace the placeholder with your Atlas connection string
uri = "<connection string>"
# Create a MongoClient with a MongoClientOptions object to set the Stable API version
client = MongoClient(uri, server_api=ServerApi(
version='1', strict=True, deprecation_errors=True))
try:
# Connect the client to the server (optional starting in v4.7)
client.connect()
# Send a ping to confirm a successful connection
client.admin.command({'ping': 1})
print("Pinged your deployment. You successfully connected to MongoDB!")
finally:
# Ensures that the client will close when you finish/error
client.close()

로컬 MongoDB deployment에 연결하려면 localhost 을 호스트 이름으로 사용합니다. 기본적으로 mongod 프로세스는 포트 27017 에서 실행되지만, 배포서버에 맞게 사용자 지정할 수 있습니다.

다음 코드는 PyMongo를 사용하여 로컬 MongoDB deployment에 연결하는 방법을 보여줍니다.

from pymongo import MongoClient
uri = "mongodb://localhost:27017/"
client = MongoClient(uri)

복제본 세트에 연결하려면 연결 에 IP 복제본 세트 멤버의 호스트 이름(또는 주소)과 포트 번호를 string 지정합니다.

복제본 세트에 있는 호스트의 전체 목록을 제공할 수 없는 경우, 복제본 세트에 있는 호스트 중 하나 이상을 지정하고 PyMongo가 자동 검색을 수행하여 다른 호스트를 찾도록 지시할 수 있습니다. 드라이버에 자동 검색을 수행하도록 지시하려면 다음 작업 중 하나를 수행합니다.

  • 복제본 세트의 이름을 replicaSet 매개변수의 값으로 지정합니다.

  • directConnection 매개 변수의 값으로 false를 지정합니다.

  • 복제본 세트에 둘 이상의 호스트를 지정합니다.

다음 예시에서 드라이버는 샘플 연결 URI를 사용하여 host1를 포함하여 서로 다른 세 호스트의 27017 포트에서 실행 중인 MongoDB 복제본 세트 sampleRS에 연결합니다.

from pymongo import MongoClient
uri = "mongodb://host1:27017/?replicaSet=sampleRS"
client = MongoClient(uri)

참고

MongoClient 생성자는 비블로킹 입니다. 복제본 세트에 연결하면 클라이언트가 백그라운드 스레드를 사용하여 복제본 세트에 연결하는 동안 생성자가 즉시 반환됩니다.

MongoClient 를 구성하고 해당 nodes 속성의 string 표현을 즉시 출력하는 경우, 클라이언트가 복제본 세트 멤버에 연결하는 동안 목록이 비어 있을 수 있습니다.

복제본 세트를 초기화하려면 단일 멤버에 직접 연결해야 합니다. 이렇게 하려면 directConnection 연결 옵션을 True 로 설정합니다. MongoClient 생성자에 인수를 전달하거나 연결 string 의 매개변수를 사용하는 두 가지 방법으로 이 작업을 수행할 수 있습니다.

MongoDB Server v3.4 이하 버전에 연결하려고 하면 PyMongo에서 다음 오류가 발생할 수 있습니다.

pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire version 5, but this version of PyMongo requires at least 6 (MongoDB 3.6).

이는 드라이버 버전이 연결하려는 서버에 비해 너무 최신 버전일 때 발생합니다. 이 문제를 해결하려면 MongoDB deployment를 v3.6 이상으로 업그레이드하거나 MongoDB Server v2.6 이상을 지원하는 PyMongo v3.x로 다운그레이드합니다.

AutoReconnect 예외는 페일오버 가 발생했음을 나타냅니다. 이는 PyMongo가 복제본 세트의 원래 프라이머리 멤버에 대한 연결을 잃었고 마지막 작업이 실패했을 수 있음을 의미합니다.

이 오류가 발생하면 PyMongo는 후속 작업을 위해 자동으로 새 프라이머리 멤버를 찾으려고 시도합니다. 오류를 처리하려면 애플리케이션에서 다음 조치 중 하나를 수행해야 합니다.

  • 실패했을 수 있는 작업 재시도

  • 작업이 실패했을 수 있다는 점을 이해하고 계속 실행합니다.

중요

PyMongo는 복제본 세트가 새 프라이머리 멤버를 선택할 때까지 모든 작업에서 AutoReconnect 오류를 발생시킵니다.

PyMongo에서 MongoClient 객체를 만드는 방법에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.

← MongoClient 만들기