Resim

PyMongo ile Koleksiyon (Tablo) Oluşturmak

PyMongo ile Koleksiyon (Tablo) Oluşturmak

MongoDB'deki koleksiyonlar, ilişkisel veritabanlarındaki tablolara karşılık gelir. Verilerinizi kategorize etmek için kullanılırlar.

Bir önceki konuda veritabanlarının ilk veri eklendiğinde otomatik oluştuğunu görmüştük. Koleksiyonlar için de aynı mantık geçerlidir: İlk belge eklendiğinde koleksiyon otomatik olarak oluşturulur.

Koleksiyon Oluşturmak

Bu, MongoDB'nin en sık kullanılan ve en esnek koleksiyon oluşturma yoludur.

Veritabanı nesneniz (db) üzerinden, istediğiniz koleksiyon adına Python sözlük erişimi yaparak koleksiyon nesnesine erişim sağlarsınız.

# db = client['proje_veri']
# 'kitaplar' adında bir koleksiyona erişim
kitaplar_col = db['kitaplar'] 

Koleksiyonun Var Olup Olmadığını Kontrol Edin

Unutmayın: MongoDB'de bir koleksiyon, içerik alana kadar oluşturulmaz, bu nedenle ilk defa koleksiyon oluşturuyorsanız, koleksiyonun var olup olmadığını kontrol etmeden önce bir sonraki bölümü (belge oluşturma) tamamlamalısınız!

print(db.list_collection_names())

sonuç: [ ] boş olacaktır.

PyMongo ile Belge (Document) Eklemek

MongoDB bir Belge Tabanlı (Document-Oriented) veritabanı olduğu için, kayıtlarımız Python'daki sözlükler (dict) gibi yapılandırılır. PyMongo, bu sözlükleri doğrudan veritabanına kaydetmemizi sağlar.

Belge eklemek için iki ana PyMongo metodu kullanılır:

  1. insert_one(): Tek bir belge eklemek için.

  2. insert_many(): Birden fazla belgeyi tek bir işlemde eklemek için.

Bu örnekler için, daha önce oluşturduğumuz kitaplar koleksiyonunu kullanmaya devam edeceğiz.

Bağlantı ve Koleksiyon Erişimi

Öncelikle bağlantımızı kuralım ve koleksiyonumuza erişelim:

from pymongo import MongoClient

# 1. Bağlantı kur
client = MongoClient('mongodb://localhost:27017/')

# 2. 'proje_db' veritabanına erişim
db = client['proje_veri']

# 3. 'kitaplar' koleksiyonuna erişim (Eğer yoksa otomatik oluşturulur)
kitaplar_col = db['kitaplar']

1. Tek Bir Belge Eklemek (insert_one)

insert_one() metodu, koleksiyona tek bir Python sözlüğü ekler ve bize ekleme işlemi hakkında bilgi veren bir InsertOneResult nesnesi döndürür.

tekil_kitap = {
    "isim": "Python Programlama Sanatı",
    "yazar": "Ahmet Bilgin",
    "yayinevi": "Yazılım Kitapları A.Ş.",
    "yil": 2024,
    "stok": 50
}
# Belgeyi ekle
sonuc = kitaplar_col.insert_one(tekil_kitap)
# Ekleme sonucunu kontrol etme
print("--- Tek Belge Ekleme ---")
print(f"Ekleme Başarılı! Otomatik Oluşturulan ID: {sonuc.inserted_id}")

Önemli Bilgi: Eğer sözlüğünüzde bir _id alanı belirtmezseniz, MongoDB otomatik olarak benzersiz bir _id alanı oluşturur ve ekler. Bu, o belgenin birincil anahtarıdır.

2. Birden Çok Belge Ekleme (insert_many)

Bir uygulama genellikle birden fazla kaydı aynı anda veritabanına kaydetme ihtiyacı duyar. Bu işlem için insert_many() metodu kullanılır. Bu metod, Python sözlüklerinden oluşan bir liste bekler.

yeni_kitaplar = [
{
    "isim": "MongoDB ile Hız Testleri",
    "yazar": "Deniz Kara",
    "yayinevi": "Veri Merkezi Yayınları",
    "yil": 2023,
    "stok": 10
},

{
    "isim": "JavaScript Temelleri",
    "yazar": "Ece Sönmez",
    "yayinevi": "Yazılım Kitapları A.Ş.",
    "yil": 2022,
    "stok": 85
}
# Belge listesini ekle
sonuc_coklu = kitaplar_col.insert_many(yeni_kitaplar)
# Ekleme sonucunu kontrol etme
print("\n--- Çoklu Belge Ekleme ---")
print(f"Ekleme Başarılı! Toplam {len(sonuc_coklu.inserted_ids)} belge eklendi.")
print(f"Oluşturulan ID'ler: {sonuc_coklu.inserted_ids}")

3. Ek Ekleme Ayarları: Hata Yönetimi

insert_many() metodunda ordered=False parametresini kullanarak, bir hata durumunda bile diğer belgelerin eklenmeye devam etmesini sağlayabilirsiniz. Varsayılan olarak (ordered=True), bir hata oluşursa tüm işlem durdurulur.

kitaplar_col.insert_many(yeni_kitaplar, ordered=False)

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Yazılım Nedir?

Python print()