CodeBlanks Logo Icon CodeBlanks

Session

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

main.py
# 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

main.py
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

Soru
from sqlalchemy.orm import sessionmaker

Session = ____(bind=engine)
Cevap
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

İleri seviye bölümündeki tüm dersler