Docs Menu
Docs Home
/ / /
PyMongo 드라이버

호환성

이 페이지의 내용

  • MongoDB 호환성
  • 호환성 표 범례
  • 언어 호환성
  • Python 3
  • Python 2

다음 호환성 표는 MongoDB의 특정 버전과 함께 사용할 PyMongo의 권장 버전을 명시합니다.

첫 번째 열에는 드라이버 버전이 나열됩니다.

중요

MongoDB는 서버 버전의 수명 종료(EOL) 날짜 이후 3년 동안 MongoDB Server와 드라이버 간의 호환성을 보장합니다. MongoDB 릴리스 및 수명 종료 날짜에 대한 자세한 내용은 MongoDB 소프트웨어 수명 주기 예정을 참조하세요.

Icon
설명

모든 기능이 지원됩니다.

드라이버 버전은 MongoDB 버전에서 작동하지만 모든 새로운 MongoDB 기능이 지원되는 것은 아닙니다.

표시 없음

드라이버 버전은 MongoDB 버전과 함께 테스트되지 않습니다.

PyMongo 버전
MongoDB 8.0
MongoDB 7.0
MongoDB 6.0
MongoDB 5.0
MongoDB 4.4
MongoDB 4.2
MongoDB 4.0
MongoDB 3.6

4.11

4.9 ~ 4.10

4.4 ~ 4.8

4.2 ~ 4.3

3.12 ~ 4.1

3.11

3.9 ~ 3.10

3.7 ~ 3.8

PyMongo는 CPython과 PyPy를 모두 지원합니다.

Python 버전이 수명 종료(EOL)로 표시되면 PyMongo의 다음 마이너 릴리스에서 해당 버전에 대한 지원이 중단됩니다. 이 드라이버는 EOL Python 버전에 대해 다음과 같은 지속적인 지원을 제공합니다.

  • CPython: EOL CPython 버전과 호환되는 마지막 마이너 PyMongo 버전은 1년 동안 중요한 버그 수정을 받습니다.

  • PyPy: PyMongo는 EOL 날짜가 지난 PyPy 버전을 지원하지 않습니다.

다음 호환성 표는 Python의 특정 버전과 함께 사용할 권장 PyMongo 버전을 명시합니다. 첫 번째 열에는 드라이버 버전이 나열됩니다.

PyMongo 버전
CPython 3.13
CPython 3.12
CPython 3.11
CPython 3.10 [1]
CPython 3.9
CPython 3.8
CPython 3.7
CPython 3.6
CPython 3.5
CPython 3.4
PyPy3

4.11

4.9 ~ 4.10

4.8

4.5 ~ 4.7

4.3 ~ 4.4

4.2

4.1 [2]

4.0

3.13

3.12

3.11

3.10

3.7 ~ 3.9

[1] Python 3.10 이상 버전은 MongoDB 4.0 이전 버전의 TLS/SSL과 호환되지 않습니다. 자세한 내용은 문제 해결 가이드 의 TLS 섹션을 참조하세요.
[2] Pymongo 4.1에는 Python 3.6.2 이상이 필요합니다.

호환성 표를 읽는 방법에 대한 자세한 내용은 MongoDB 호환성 표를 참조하세요.

PyMongo 버전 3.7 ~ 3.12 은 Python 2.7 및 Python 2.7호환 대체 인터프리터인 PyPy와 호환됩니다. 그러나 경우에 따라 PyMongo 애플리케이션은 Python 2 환경에서 실행 때 다르게 동작합니다.

다음 섹션에서는 PyMongo 사용할 때 Python 2 과 Python 3 간의 동작 차이점에 대해 설명합니다.

모든 버전의 Python 에서 PyMongo 바이트열 클래스의 인스턴스를 바이너리 데이터의 기본값 하위 유형인 하위 유형 을(를) 사용하여 바이너리 0 데이터로 인코딩합니다. Python 3 에서 PyMongo 이러한 값을 클래스의 인스턴스로 bytes 디코딩합니다. Python 2 에서 운전자 이를 하위 유형 인 바이너리 클래스의 인스턴스로 0 디코딩합니다. 차이점을 보여주는 코드 예제는 확장 JSON 페이지를 참조하세요.

운전자 하위 유형이 인 JSON 바이너리 값을 디코딩할 때 동일한 방식으로 0 작동합니다. Python 3 에서는 이러한 값을 클래스의 인스턴스로 bytes 디코딩합니다. Python 2 에서 운전자 Binary 이를 하위 유형 인 0 클래스의 인스턴스로 디코딩합니다. 차이점을 보여주는 코드 예제는 확장 JSON 페이지를 참조하세요.

Python 2 에서 ObjectId 를 피클링하고 Python 3에서 피클링을 해제하려면 encoding='latin-1'pickle.loads() 메서드에 인수로 전달해야 합니다.

다음 예시 Python 3 를 사용하여 Python 2에서 피클된 ObjectId 피클을 해제하는 방법을 보여 줍니다.

import pickle
pickle.loads(b'<ObjectId byte stream>', encoding='latin-1')

Python 3 애플리케이션 호환되는 직렬화 프로토콜 사용하여 ObjectId을(를) 피클하는 경우, Python 2 을(를) 사용하여 피클을 해제할 수 있습니다. Python 3에서 호환되는 프로토콜 지정하려면 pickle.dumps() 메서드의 protocol 매개 변수에 0, 1 또는 2 값을 전달합니다.

다음 예시 에서는 Python 3에서 ObjectId 를 피클링한 다음 ObjectId 및 결과 bytes 인스턴스 인쇄합니다.

import pickle
from bson.objectid import ObjectId
oid = ObjectId()
oid_bytes = pickle.dumps(oid, protocol=2)
print("ObjectId: {}".format(oid))
print("ObjectId bytes: {}".format(oid_bytes))
ObjectId: 67af9b1fae9260c0e97eb9eb
ObjectId bytes: b'\x80\x02cbson.objectid\nObjectId\nq\x00...

다음 예시 이전 예시 에서 ObjectId 을 언피클링한 다음 bytesObjectId 인스턴스를 출력합니다.

import pickle
from bson.objectid import ObjectId
oid_bytes = b'\x80\x02cbson.objectid\nObjectId\nq\x00...'
oid = pickle.loads(oid_bytes)
print("ObjectId bytes: {}".format(oid_bytes))
print("ObjectId: {}".format(oid))
ObjectId bytes: b'\x80\x02cbson.objectid\nObjectId\nq\x00)...
ObjectId: 67af9b1fae9260c0e97eb9eb

돌아가기

이슈 & 도움말