mongofw
Python'dan MongoDB kullanımını kolaylaştıran küçük bir kütüphane.
mongofw, MongoDB ile çalışırken sürekli tekrar ettiğim işleri tek bir sınıfta toplayan küçük bir Python kütüphanesi. pymongo üzerine kurulu ve ekleme, sorgulama, güncelleme, silme, yedekleme ve geri yükleme gibi işlemleri sade metotlarla sunuyor. İsteğe bağlı olarak sorgu sonuçlarını Valkey üzerinde önbelleğe alabiliyor.
Amaç
pymongo güçlü bir sürücü, ancak her projede bağlantı kurma, _id alanını ObjectId'ye çevirme, hata yakalama, sayfalama için toplam kayıt sayısını hesaplama ve sonuçları JSON'a dönüştürme gibi aynı kodları yeniden yazmam gerekiyordu. mongofw'yu bu tekrarı ortadan kaldırmak için yazdım.
Bir diğer amacım da sorgu yazmayı kolaylaştırmaktı. MongoDB'nin kendi sorgu dili esnek ama iç içe sözlüklerle yazıldığı için okunması zaman zaman zorlaşıyor. Kütüphanede koşulları daha kısa ve okunur bir biçimde verip arka planda MongoDB sorgusuna dönüştürmeyi hedefledim.
Nasıl çalışır
Kütüphanenin merkezinde MongoDBFramework sınıfı bulunuyor. Sınıf oluşturulurken bağlantı bilgileri, kullanılacak koleksiyon ve isteğe bağlı bir Valkey istemcisi veriliyor. Koleksiyon daha sonra set_collection metoduyla değiştirilebiliyor.
Sorgulama get metoduyla yapılıyor. Koşullar bir sözlük olarak veriliyor ve her alan için kısa operatörler kullanılabiliyor. Örneğin sw bir metnin belirli bir ifadeyle başlamasını, ew bitmesini, sew ise içermesini arıyor; bunlar büyük-küçük harf duyarsız düzenli ifadelere çevriliyor. gt, gte, lt, lte, in ve nin gibi karşılaştırma operatörleri de MongoDB'deki karşılıklarına dönüştürülüyor. or anahtarıyla birden fazla koşulu "veya" bağlacıyla birleştirmek mümkün. Nokta ile başlayan alan adları, verilen temel alanın altına ekleniyor; bu sayede iç içe belgelerde uzun alan yollarını tekrar tekrar yazmak gerekmiyor.
get metoduna sıralama, atlama ve sınır değerleri verildiğinde sonuçla birlikte toplam kayıt sayısı da dönüyor, bu da sayfalama yapmayı kolaylaştırıyor. group_by parametresi verildiğinde sorgu bir aggregation hattına, yani MongoDB'nin verileri aşamalar halinde işleyen toplama mekanizmasına dönüşüyor ve belirtilen alana göre gruplanmış kayıt sayılarını veriyor.
Valkey istemcisi tanımlıysa ve sorguda önbellek istendiyse sonuç, koleksiyon adı ve sorgu parametrelerinden oluşturulan bir anahtarla belirli bir süre için önbelleğe yazılıyor. Aynı sorgu tekrar geldiğinde sonuç veritabanına gidilmeden önbellekten okunuyor.
Öne çıkan özellikler
- Ekleme, toplu ekleme, güncelleme, toplu güncelleme, silme ve toplu silme işlemleri tek tip metotlarla yapılıyor.
- Belirli bir alanın iki değer arasında kalan kayıtlarını güncellemek veya silmek için
update_betweenvedelete_betweenmetotları var. - Metin olarak gelen
_iddeğerleri otomatik olarak ObjectId'ye çevriliyor. - Tüm metotlar bir dekoratörle sarıldığı için MongoDB hataları yakalanıyor ve başarı durumunu ve mesajı içeren tutarlı bir yanıt dönüyor.
- ObjectId ve tarih değerlerini JSON'a çevirip geri okuyabilen bir kodlayıcı ve çözücü bulunuyor.
get_sqlmetodu aynı koşulların SQL karşılığını üretiyor; bu, MongoDB sorgusunu SQL bilen biriyle konuşurken ya da hata ayıklarken işe yarıyor.backupverestoremetotları, MongoDB'ninmongodumpvemongorestorearaçlarını çağırarak veritabanını yedekliyor ve geri yüklüyor.- Sorgu sonuçları isteğe bağlı olarak Valkey üzerinde süreli biçimde önbelleğe alınabiliyor.
Teknik altyapı
Kütüphane Python ile yazıldı ve Python 3.9 ve üzeri sürümlerle çalışıyor. Tek doğrudan bağımlılığı pymongo. Önbellek özelliği için dışarıdan bir Valkey veya Redis istemcisi veriliyor; kütüphane bu istemcinin get ve set metotlarını kullanıyor. Yedekleme ve geri yükleme için sistemde MongoDB'nin komut satırı araçlarının kurulu olması gerekiyor. Paket setuptools ile hazırlandı ve MIT lisansıyla yayınlandı.
Kullanım alanları
- MongoDB kullanan küçük ve orta ölçekli Python projelerinde veri erişim katmanını hızlıca kurmak için kullanılabilir.
- Arama ve listeleme ekranlarında metin içinde arama, aralık filtreleri ve sayfalama gerektiren sorgular için uygundur.
- Sık tekrarlanan okuma sorgularını Valkey ile önbelleğe alarak veritabanı yükünü azaltmaya yardımcı olur.
- Basit yedekleme ve geri yükleme işlerini Python betiklerinin içinden yapmak için kullanılabilir.
Durum
Kütüphanenin 1.0.1 sürümünü 2025'te yayınladım. Kendi projelerimde ortaya çıkan ihtiyaçlara göre şekillenen küçük bir araç; geniş bir çatı olarak tasarlanmadı.
- Kategori
- Veri ve veritabanı
- Yıl
- 2025
Teknolojiler
- Python
- MongoDB
- PyPI