Kurs
MongoDB kümenizi Python projenize bağlamaya hazır mısınız? Şanslısınız. Bu eğitimde PyMongo’nun ne olduğunu, MongoDB’yi veritabanı olarak kullanan Python geliştiricileri için neden tercih edilen paket olduğunu ve ilk bağlantınızı mümkün olduğunca verimli bir şekilde nasıl çalışır hale getireceğinizi öğreneceksiniz.
Yeni başlıyorsanız mutlaka şu kursumuza göz atın: Python’da Veri Bilimi için MongoDB Kullanımına Giriş.
PyMongo nedir?
Peki, PyMongo Python paketi tam olarak nedir? Bu paket, geliştiricilerin Python uygulamaları ve MongoDB veritabanlarıyla bağlantı kurmasını, sorgu çalıştırmasını ve etkileşimde bulunmasını sağlayan MongoDB’nin resmi Python sürücüsüdür.
Python’dan MongoDB veritabanlarınızla etkileşime geçmenin önerilen yoludur ve Flask ile Django ile uyumluluğu sayesinde çeşitli web uygulamaları geliştirmek için harikadır. Python geliştiricilerinin MongoDB’yi uygulamalarında tam kapasiteyle kullanmasına gerçekten yardımcı olur.
Şimdi, örnek bir CRUD (create, read, update, delete — oluşturma, okuma, güncelleme, silme) kullanıcı uygulamasını çalıştırarak PyMongo ile nasıl başlayacağımızı görelim; böylece en az kodla ne kadar kolay ayağa kalktığını göreceksiniz!
Başarı için Gereksinimler
Bu eğitimi sorunsuz takip edebilmek için lütfen aşağıdaki ön koşullara sahip olduğunuzdan emin olun:
- Bir MongoDB Atlas hesabı
- Seçtiğiniz bir IDE (bu eğitimde Google Colab defteri kullanılıyor)
- Python 3.6+
pipkurulmuş olmalı (Google Colab dışında bir IDE kullanıyorsanız).
Bir MongoDB Kümesi Oluşturma
MongoDB veritabanımızı Python projemize bağlamadan önce bir küme oluşturmamız gerekiyor! Bunu yapmak için MongoDB Atlas hesabınıza giriş yapın ve henüz yoksa yeni bir proje oluşturun.
Ardından, proje içinde bir küme oluşturun.

Şimdi kümenizi dağıtmaya hazırsınız. “Free” katmanını tıklayın (sonsuz ücretsiz!) ve kümeniz için bir ad seçin ya da varsayılan adı kullanın.
Lütfen kümeniz için bir ad seçtikten sonra bunu değiştiremeyeceğinizi unutmayın. Bulut sağlayıcısını seçin (AWS, Google Cloud ve Azure arasından seçim yapabilirsiniz) ve doğru bölgede olduğunuzdan emin olun.

Yeşil “Create Deployment” düğmesine tıklayın ve devam etmeye hazırız.
Sizden kümeniz için bir “Username” ve “Password” seçmeniz istenecek. Lütfen akılda kalıcı (ama bu eğitimdeki kadar değil!) ve güvenli bir şey seçin; bu bilgilere Bağlantı Dizenize her eriştiğinizde ihtiyaç duyacaksınız.
Kendinize kolaylık olması için “Preload sample dataset” düğmesine de tıklamayı unutmayın. Bu, birlikte çalışacağımız “sample_mflix” örnek veri setini otomatik olarak yükleyecektir.
Devam etmek için “Create Database User”a tıklayın.

Artık kümenize bağlanabilirsiniz! Bunu yapmanın birçok yolu var, ancak bu eğitim PyMongo’ya odaklandığı için Sürücüler üzerinden bağlanacağız.

“Python”u ve kullanmak istediğiniz sürümü seçin (biz 4.7 veya daha yenisini seçeceğiz) ve Bağlantı Dizenizi göreceksiniz. Kullanıcı adınız ve parolanız kullanım kolaylığı için otomatik olarak doldurulur.

Artık Bağlantı Dizenizi aldığınıza göre lütfen onu güvenli bir yerde saklayın. Yeşil “Done” düğmesine basabiliriz.
Kümeniz yapılandırıldığında şöyle görünecektir.
![Yapılandırılmış küme görünümü]](https://media.datacamp.com/cms/ad_4nxf2qowpihkjm1stvlc-ddf-wiee5pc64vmyac6z-hvxdhkucer83idgex9z73erlpem2bm4vgfq6sfqb8d5opoibgpxvlzlyenuri_fcicaw_7_6lrqpk9_djmzyjowquwtdndjzg.png)
Lütfen ekranın sol tarafındaki “Network Access” düğmesine gidin ve IP adresinizin doğru yapılandırıldığından emin olun. Bu eğitim için (elbette üretim için önerilmez), basitlik adına IP adresinizi “Access from Anywhere” yapabilirsiniz.
Üretim uyarısı: Üretim seviyesindeki uygulamalar için Atlas’ta Network Access > IP Access List altında belirli IP’leri beyaz listeye alın.
Şimdi seçtiğiniz IDE’ye geçelim ve elimizdeki verilerle biraz oynayalım!
PyMongo ile Bağlanma ve CRUD İşlemleri Yapma
İlk adımımız, pip ile pymongo kurmak. Bu adımda ayrıca bağlantımızın güvenli kalmasını istediğimiz için getpass de yüklüyoruz:
!pip install pymongo
Sırada kümesimize MongoDB bağlantısını ayarlamak var. Bağlantımızı sağlamak için MongoClient kullanacağız.
import getpass
from pymongo import MongoClient
# Get connection string from user
connection_string = getpass.getpass(prompt="Enter connection string WITH USER + PASS here: ")
try:
client = MongoClient(connection_string)
client.admin.command("ping")
print("Successfully connected")
except Exception as e:
print("Connection failed:", e)
Veritabanımızın ve koleksiyonumuzun adını görmek için kümenize geri dönün. Veritabanı adı sample_mflix ve koleksiyon adı users.
Bu örnek kümede üzerinde çalıştığımız bilgilere bir örnek: Her belgenin ObjectId’si ile birlikte her kullanıcının adı, e-postası ve parolası var.

Betikten belgeleri okuyabildiğimizden emin olmak için hızlı bir test çalıştıralım:
database = client["sample_mflix"]
collection = database["users"]
for document in collection.find().limit(20):
print(document)
Başarıyla çalıştığında şunu göreceksiniz:

Not: sample_mflix veri seti, gösterim amaçlı olarak düz metin parolalar içerir. Gerçek uygulamalarda parolaları daima hash’leyin (örn. bcrypt veya Argon2 ile) ve kimlik bilgilerini kod içerisine gömmekten kaçının.
Bu, aynı zamanda kümedeki bilgileri okuma yolumuzdu! Şimdi yeni bir kullanıcı oluşturalım.
new_user = {
"name": "Anaiya Raisinghani",
"email": "fakeanaiya@gmail.com",
"password": "pleasedonothackme"
}
# insert the document
result = collection.insert_one(new_user)
print(result.inserted_id)
Yeni kullanıcı kimliğimizi görebiliyoruz ve kümeme geri dönersem bu kimliği arayarak yeni kullanıcı belgem çıkıyor mu kontrol edebilirim:

Şimdi, az önce oluşturduğumuz belgeyi güncelleyelim.
Not: BSON, PyMongo ile birlikte gelir—ek kurulum gerekmez. ObjectId, MongoDB’nin varsayılan benzersiz kimlik formatıdır.
from bson import ObjectId
collection.update_one(
{"_id": result.inserted_id}, # using the same document that we inserted above
{"$set": {"password": "help!ivebeenhacked!!"}}
)

Gördüğümüz gibi parola güncellendi ve değişiklik MongoDB Atlas arayüzümüzde görünüyor.
Şimdi bu belgeyi silelim.
delete_user = collection.delete_one({"_id": result.inserted_id})
print("Deleted users:", delete_user.deleted_count)
Silinen kullanıcılar “1” olacaktır. MongoDB Atlas arayüzümüzde bir kez daha kontrol edelim (emin olmak için!).

Belgemizi başarıyla sildik!
Sonuç
Bu eğitimde, MongoDB’nin resmi Python sürücüsü olan PyMongo ile ilk 10 dakikanızı başarıyla tamamladık. Koleksiyonumuzdaki belgeleri okuduk, yeni bir kullanıcı oluşturduk, o kullanıcıyı güncelledik ve sildik!
PyMongo hakkında daha fazla bilgi için lütfen şu kursa göz atın: Python’da Veri Bilimi için MongoDB Kullanımına Giriş ve resmi dokümantasyonu ziyaret edin.
FAQs
What are some common errors when connecting PyMongo to MongoDB?
Typical issues include incorrect connection strings, firewall restrictions (IP whitelist), or authentication failures. Check your credentials and network settings carefully if connections fail.
Does PyMongo support asynchronous programming?
PyMongo itself does not natively support async operations. If you need async capabilities, consider using Motor, MongoDB’s official asynchronous Python driver.
Can PyMongo handle database transactions?
Yes, PyMongo supports multi-document ACID transactions, provided you’re using MongoDB replica sets or sharded clusters. Transactions are not available on standalone deployments.
How do I handle PyMongo connection pooling?
PyMongo automatically manages connection pooling behind the scenes. You can configure pooling parameters (like pool size and timeout) via MongoClient settings if needed.
Can I use PyMongo with Pandas for data analysis tasks?
Absolutely! You can easily fetch MongoDB data using PyMongo, then load it directly into Pandas DataFrames for data analysis and manipulation.


