30-05-2017, Saat: 17:20
En çok kullanılan sqlalchemy filtreleri:
filter(): Geriye filtrelenmiş bir sorgu dönderir. Parametre olarak o sınıfın attributlarından birini alır:
Kod:
user = User.query.filter(User.username=='mtndmr')
filter_by(): Geriye belirli bir değere göre filtrelenmiş bir sorgu dönderir.
Kod:
user = User.query.filter_by(username='mtndmr')
limit(): Geriye sınırı belirtilmiş bir sorgu gönderir. Örneğin kullacı tablosundan hepsini değilde 5 tanesini almak istersek:
Kod:
users = User.query.limit(5).all()
order_by(): Sorguya bir sıralama kriteri ekler ve geriye bir sorgu dönderir:
Kod:
users = User.query.order_by(User.username).all()
group_by(): Geriye gruplanmış bir sorgu dönderir. Örnek olarak kullanıcıları rollerine gruplamak istersek:
Kod:
user = User.query.group_by(User.id, User.role_id).all()
kullanıcıları kaç grup varsa o kadar gruba ayırır. group_by() fonksiyonuna parametre olarak User.id verilmek zorundadır. Diğer tablolarda da group_by() ile sorgulama yapılacaksa o tablodaki id alanı parametre olarak verilmek zorundadır.
Sorgu çalıştırıcılar:
Her sorgunun sonunda
Kod:
all()
,
Kod:
first()
gibi ifadeler gördünüz. İşte bunlar sorgu çalıştırıcılardan bazılarıdır. Bir sorgu yapıldığında en son olarak bu metotlardan biri çağrılmazsa sonuç veritabanından alınmaz. Bunlar sorguları çalıştıran metotlardır. En yaygın olarak kullanılanlar:
all(): Geriye o sorgunun tüm sonuçlarını liste olarak getirir.
first(): Geriye bir sorgunun ilk kaydını getirir. Kayıt yok ise None dönderir.
first_or_404(): Geriye sorgunun ilk kaydını dönderir eğer kayıt varsa, yoksa geriye kayıt bulunmadı olarak 404 hatası dönderir.
get(): Parametre olarak verilen primary key değerine sahip bir satır varsa dönderir, yoksa None.
Kod:
user = User.query.get(9)
user.id #9
user.username #kullanıcı adi
get_or_404():
Kod:
get()
ile aynıdır, bulunmadığı zamanda sonuç olarak
Kod:
404
hata mesajını gönderir.
count(): Geriye sorgu sonucunun kayıt sayısını gönderir.
Kod:
role = Role.query.filter_by(name='Admin').first()
total_user = role.users.count()
print(total_user)