CodeBlanks Logo Icon CodeBlanks

Özet - SQLAlchemy

Engine, Session ve query'yi birleştirerek bir kullanıcı deposu yazarsın.

Özet - SQLAlchemy

Bu grupta SQLAlchemy'in temel kavramlarını öğrendin. Engine bağlantıyı, Session işlemleri, declarative_base model tanımını, Column sütunları, session.query sorguları yönetir.

engine = create_engine("sqlite:///:memory:")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
session.add(User(name="Ayşe"))
session.commit()
print(len(session.query(User).all()))

Son adımda tüm bunları birleştirerek bir kullanıcı deposu yazacaksın.

Uygulama Kullanıcı deposu

from sqlalchemy import create_engine, Column, Integer, String, from sqlalchemy.orm import declarative_base, sessionmaker ile başla. Base = declarative_base() ve class User(Base): tanımla (__tablename__ = "users", id = Column(Integer, primary_key=True), name = Column(String)). engine = create_engine("sqlite:///:memory:") ve Base.metadata.create_all(engine) ile tabloları oluştur. Session = sessionmaker(bind=engine) ve session = Session() ile oturum aç. session.add(User(name="Ayşe")) ve session.add(User(name="Ali")) ile iki kayıt ekle, session.commit() yap. print(len(session.query(User).all())) ile kayıt sayısını yazdır.

Başlangıç kodu

main.py
# sqlalchemyden create_engine, Column, Integer, String'i içe aktar
# declarative_base ve sessionmaker'ı içe aktar
# Base ve User sınıfını tanımla
# motoru oluştur ve tabloları yarat
# oturum aç, iki User ekle ve commit yap
# sorgu ile kayıt sayısını yazdır

Örnek çözüm

main.py
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)

engine = create_engine("sqlite:///:memory:")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
session.add(User(name="Ayşe"))
session.add(User(name="Ali"))
session.commit()
print(len(session.query(User).all()))

Beklenen çıktı

2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi oturumdan tüm kayıtları getirir?

  • session.commit()
  • session.query(User).all() Doğru cevap
  • session.add(User)
  • session.close()

Açıklama: session.query(User).all() tüm User kayıtlarını getirir.

2 Grup araçlarını eşleştir

Kavram Anlamı
create_engine Motor oluşturur
sessionmaker Oturum fabrikasıdır
declarative_base Temel sınıf verir
session.query Sorgu başlatır

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