호환성
MongoDB 호환성
다음 호환성 표는 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 버전을 명시합니다. 첫 번째 열에는 드라이버 버전이 나열됩니다.
Python 3
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 호환성 표를 참조하세요.
Python 2
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 페이지를 참조하세요.
피클된 객체 ID
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
을 언피클링한 다음 bytes
및 ObjectId
인스턴스를 출력합니다.
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