MongoDB, SQL Server veya MySQL gibi tablo/satır mantığıyla çalışmayan bir NoSQL veritabanıdır — veriler JSON'a benzer esnek "doküman" yapılarında saklanır. Bu derste ücretsiz bir MongoDB Atlas (bulut) veritabanı kurup Python'dan bağlanacağız.
MongoDB Atlas'ta Ücretsiz Küme Oluşturmak
mongodb.com üzerinden ücretsiz bir hesap açıp Free (M0) katmanda bir küme (cluster) oluşturun. Kurulum sihirbazında:
- Bir veritabanı kullanıcı adı ve şifresi belirleyin — bu bilgileri not edin, bağlantı için gerekecek.
- Network Access kısmından, bağlanacağınız IP adresini (veya geliştirme aşamasında "Allow access from anywhere") ekleyin.
Küme oluştuktan sonra Connect butonuna tıklayıp bir connection string (bağlantı dizesi) alın — bu, mongodb+srv://kullanici:sifre@cluster.mongodb.net/ formatında bir adrestir.
pymongo ile Bağlanmak
pip install pymongo
from pymongo import MongoClient
client = MongoClient("mongodb+srv://kullanici:SIFRENIZ@cluster.mongodb.net/")
db = client["telegram_db"]
collection = db["kayitlar"]
Burada db bir veritabanını, collection ise SQL'deki tabloya karşılık gelen bir koleksiyonu temsil eder — MongoDB'de bunlar siz ilk veriyi eklediğinizde otomatik olarak oluşur, ayrıca bir CREATE TABLE benzeri komuta ihtiyaç yoktur.
Kayıt Eklemek
kayit = {"isim": "Ahmet", "sayi": 50, "ulke": "TR"}
collection.insert_one(kayit)
Her belge (document) kendi içinde farklı alanlara sahip olabilir — MongoDB'de tüm satırların aynı sabit kolon yapısına uyması zorunlu değildir, bu SQL veritabanlarından temel farkıdır.
Veri Filtrelemek
sonuclar = collection.find({"isim": "Ahmet"})
for kayit in sonuclar:
print(kayit)
find() fonksiyonu, verdiğiniz filtre kriterine (burada isim alanı "Ahmet" olan belgeler) uyan tüm kayıtları döndürür — boş bir sözlük ({}) verirseniz koleksiyondaki tüm kayıtları alırsınız.
Ne Zaman MongoDB, Ne Zaman SQL?
Verileriniz sabit, birbiriyle ilişkili tablolar halinde düşünülebiliyorsa (müşteri-sipariş gibi) SQL Server/MySQL gibi ilişkisel bir veritabanı daha uygundur. Veri yapınız esnek/değişken ise (her kaydın farklı alanlara sahip olabildiği durumlar) MongoDB'nin doküman modeli daha az sürtünmeyle çalışır.
Sırada Ne Var?
Sırada, Excel dosyalarından openpyxl kütüphanesiyle Python'a veri okumaya başlıyoruz — önce belirli bir kolondan veri çekmeyi göreceğiz.