Session
- Python kursu
- İleri seviye
- Ders 44/83
- 5 dk
sessionmaker ile oturum yönetimini öğrenirsin.
Session
sessionmaker, oturum üreten bir fabrika sınıfıdır. Bir Engine'e bağlanarak Session() çağrısı her seferinde yeni bir oturum verir. Tüm veritabanı işlemleri oturum üzerinden yapılır.
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
session.add(obj)
session.commit()Oturum, işlem (transaction) yönetir; commit değişiklikleri kalıcı yapar, rollback geri alır. İşlem bitince oturumu kapatırsın.
commit ve rollback
Oturuma eklenen nesneler commit() çağrılana kadar veritabanına yazılmaz. Hata durumunda rollback() işlemi geri alır.
session.add(User(name="Ayşe"))
session.commit() # kalıcı yap
# veya hata varsa:
session.rollback() # geri alİşlem bitince session.close() ile oturumu kapatırsın. Bu, bağlantıyı havuza geri verir. Aynı motor üzerinde birden çok oturum açıp kapatbilirsin.
Uygulama Session oluştur ve türünü yazdır
from sqlalchemy import create_engine ve from sqlalchemy.orm import sessionmaker ile başla. engine = create_engine("sqlite:///:memory:") tanımla. Session = sessionmaker(bind=engine) ile oturum fabrikası oluştur. session = Session() ile oturum aç. print(type(session).__name__) ile sınıf adını yazdır.
Başlangıç kodu
# sqlalchemyden create_engine ve sessionmaker'ı içe aktar
# bir motor tanımla (sqlite bellek)
# sessionmaker ile oturum fabrikası oluştur (motora bağla)
# fabrikadan bir oturum aç
# oturumun sınıf adını yazdırÖrnek çözüm
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///:memory:")
Session = sessionmaker(bind=engine)
session = Session()
print(type(session).__name__)Beklenen çıktı
Session
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 sessionmaker çağrısını tamamla
from sqlalchemy.orm import sessionmaker
Session = ____(bind=engine)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
Açıklama: sessionmaker(bind=engine) ile oturum fabrikası oluşturulur.
2 session.commit ne yapar?
- Oturumu kapatır
- Sorgu çalıştırır
- Değişiklikleri kalıcı yapar Doğru cevap
- Engine oluşturur
Açıklama: commit, oturumdaki değişiklikleri veritabanına kalıcı olarak yazar.
3 Session kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
sessionmaker |
Oturum fabrikasıdır |
bind=engine |
Motoru bağlar |
session.add |
Nesne ekler |
session.commit |
Kalıcı yapar |