Sejauh ini kita berinteraksi dengan MongoDB lewat mongosh — praktis untuk eksplorasi, tetapi aplikasi produksi butuh driver yang berjalan di dalam kode program. Untuk Python, driver resminya bernama PyMongo: pustaka sinkron yang menerjemahkan operasi find, insert, hingga aggregation menjadi panggilan method Python biasa. Chapter ini menyiapkan lingkungan kerja kita: memasang PyMongo di virtual environment, memverifikasi instalasinya, lalu mengenali paket-paket di sekitarnya.
Persyaratan dan Virtual Environment #
PyMongo 4.19 membutuhkan Python 3.11 atau lebih baru — versi yang lebih lama tidak bisa memasang rilis ini. Praktik yang disarankan adalah mengisolasi dependensi proyek lewat virtual environment, agar setiap proyek memiliki salinan pymongo versinya sendiri dan tidak saling menimpa. Kita buat venv baru lalu pasang paketnya:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install pymongoDi Windows, baris aktivasi diganti .venv\Scripts\activate. Perintah python3 -m pip sengaja dipakai agar pip yang terpakai pasti milik interpreter yang sedang aktif, bukan milik sistem operasi.
Output yang Dihasilkan:
Collecting pymongo
Downloading pymongo-4.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (10 kB)
Collecting dnspython<3.0.0,>=2.7.0 (from pymongo)
Downloading dnspython-2.9.0-py3-none-any.whl.metadata (5.7 kB)
Downloading pymongo-4.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.1 MB)
Downloading dnspython-2.9.0-py3-none-any.whl (354 kB)
Installing collected packages: dnspython, pymongo
Successfully installed dnspython-2.9.0 pymongo-4.19.0Dua baris terakhir itulah yang penting: pymongo 4.19.0 terpasang, dan pip ikut memasang dnspython sebagai dependensi wajib PyMongo modern (nama berkas unduhan .whl berbeda-beda menurut sistem operasi; angka versi dnspython bisa sedikit lebih baru).
Verifikasi Instalasi #
Jangan percaya instalasi sebelum terbukti. Program kecil berikut memeriksa tiga lapisan sekaligus: versi Python yang berjalan, versi PyMongo yang terimpor, dan koneksi sungguhan ke server MongoDB lokal kita. Simpan sebagai cek_instalasi.py:
import os
import sys
import pymongo
from pymongo import MongoClient
URI = os.environ.get(
"MONGODB_URI", "mongodb://127.0.0.1:27017/?directConnection=true"
)
print("Versi Python :", sys.version.split()[0])
print("Versi PyMongo :", pymongo.version)
print("Ekstensi C :", "aktif" if pymongo.has_c() else "tidak aktif")
client = MongoClient(URI, serverSelectionTimeoutMS=5000)
print("Ping server :", client.admin.command("ping")["ok"])
print("Versi server :", client.server_info()["version"])
client.close()Jalankan dengan python3 cek_instalasi.py. Address server diambil dari environment variable MONGODB_URI bila ada — pola yang kita pakai konsisten di seluruh Section ini agar contoh bisa diarahkan ke server mana pun tanpa mengubah kode.
Output yang Dihasilkan:
Versi Python : 3.12.15
Versi PyMongo : 4.19.0
Ekstensi C : aktif
Ping server : 1.0
Versi server : 9.0.2Mari kita bedah baris-baris pentingnya:
import pymongo— modul inti;pymongo.versionmenyimpan versi paket sebagai string, danpymongo.has_c()melaporkan apakah ekstensi C terpasang. Ekstensi C mempercepat proses encode/decode BSON, dan keluaranaktifberarti performa terbaik tersedia.from pymongo import MongoClient— kelas pintu masuk ke server; kita bahas tuntas di Chapter Membuat Koneksi Database.client.admin.command("ping")["ok"]— mengirim perintahpingke databaseadmindan membaca fieldokdari balasannya; nilai1.0berarti server merespons.client.server_info()["version"]— meminta informasi server; di sini terbaca9.0.2, sehingga kita tahu driver dan server saling cocok.client.close()— menutup koneksi secara eksplisit; kebiasaan yang menjaga sumber daya tetap rapi.
Dependensi dan Paket Terkait #
PyMongo adalah keluarga paket, bukan pahlawan tunggal. Tabel ini memetakan perannya:
| Paket | Cara pasang | Peran |
|---|---|---|
pymongo | python3 -m pip install pymongo | Driver resmi sinkron — fokus Section ini |
dnspython | terpasang otomatis bersama pymongo | resolusi DNS; wajib agar connection string mongodb+srv:// berfungsi |
motor | python3 -m pip install motor | driver async yang dibangun di atas PyMongo, untuk aplikasi asyncio/FastAPI |
Paket dnspython perlu dicermati: connection string bertipe mongodb+srv:// (umum di MongoDB Atlas) menyandikan daftar server dalam record DNS SRV, dan resolusinya ditangani dnspython. Karena kini menjadi dependensi wajib, pola mongodb+srv:// langsung berfungsi tanpa langkah tambahan. Adapun motor membebaskan thread aplikasi saat menunggu I/O jaringan dengan memakai async/await; sintaks filter dan operasinya sama dengan PyMongo karena keduanya berbagi implementasi yang sama.
Rangkuman #
- PyMongo 4.19 membutuhkan Python 3.11+; pasang di dalam virtual environment dengan
python3 -m pip install pymongo. pymongo.versiondanpymongo.has_c()memverifikasi paket;pingdanserver_info()memverifikasi jalur ke server.dnspythonterpasang otomatis dan mengaktifkan connection stringmongodb+srv://.- Untuk aplikasi async (asyncio, FastAPI), pakai
motoryang berdiri di atas PyMongo. - Simpan versi di
requirements.txtagar lingkungan tim konsisten.
Lingkungan siap. Chapter berikutnya membuka koneksi pertama kita dan membedah perilaku MongoClient yang ternyata malas — dalam arti yang baik.