Python
Query
session.query ile sorgu yapmayı öğrenirsin.
Query
session.query(Model), bir sorgu nesnesi döndürür. .all() tüm sonuçları liste olarak verir; .filter(...) koşul ekler; .first() ilk sonucu verir.
users = session.query(User).all()
active = session.query(User).filter(User.name == "Ayşe").first()
print(users[0].name)
Sorgu nesnesi tembeldir; .all(), .first() veya .count() çağrılana kadar veritabanına gitmez.
filter ile koşul
.filter(...) koşul ekler. SQLAlchemy sütunları Python nesnesi olarak kullanıldığı için ==, !=, >, < gibi işleçlerle karşılaştırma yapılır.
# adı 'Ayşe' olanlar
session.query(User).filter(User.name == "Ayşe").all()
# yaşı 18'den büyük olanlar
session.query(User).filter(User.age > 18).all()
Birden çok koşul için filter(a, b) veya filter(a).filter(b) kullanılır; ikisi de AND anlamına gelir.
Uygulama User kaydet ve sorgula
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.commit() ile kayıt ekle. users = session.query(User).all() ile sorgula. print(users[0].name) ile adı yazdır.
Örnek çözümü göster
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.commit()
users = session.query(User).all()
print(users[0].name)
Kendini test et
-
query çağrısını tamamla
users = session.____(User).all()
Cevabı göster
users = session.query(User).all()
-
query(Model).all() ne döndürür?
- Tüm sonuçların listesi
- Tek bir nesne
- Bir sorgu dizesi
- Bir Engine nesnesi
Cevabı göster
Tüm sonuçların listesi — .all() tüm sonuçları bir liste olarak döndürür.
-
Query kavramlarını eşleştir
- session.query
- Sorgu başlatır
- .all()
- Liste döndürür
- .filter(...)
- Koşul ekler
- .first()
- İlk sonucu verir
Sıradaki ders: Özet - SQLAlchemy