SQLAlchemy Core - Bağlaçları Kullanma
Bağlaçlar, SQL ifadelerinin WHERE yan tümcesinde kullanılan ilişkisel işleçleri uygulayan SQLAlchemy modülündeki işlevlerdir. AND, OR, NOT vb. Operatörleri, iki ayrı mantıksal ifadeyi birleştiren bir bileşik ifade oluşturmak için kullanılır. SELECT deyiminde AND kullanmanın basit bir örneği aşağıdaki gibidir -
SELECT * from EMPLOYEE WHERE salary>10000 AND age>30
SQLAlchemy fonksiyonları ve_ () veya_ () ve not_ () sırasıyla AND, OR ve NOT operatörlerini uygular.
and_ () işlevi
AND ile birleştirilmiş bir ifade birleşimi üretir. Daha iyi anlamak için aşağıda bir örnek verilmiştir -
from sqlalchemy import and_
print(
and_(
students.c.name == 'Ravi',
students.c.id <3
)
)
Bu, -
students.name = :name_1 AND students.id < :id_1
Bir öğrenci tablosundaki bir select () yapısında and_ () kullanmak için aşağıdaki kod satırını kullanın -
stmt = select([students]).where(and_(students.c.name == 'Ravi', students.c.id <3))
Aşağıdaki nitelikteki SELECT ifadesi oluşturulacaktır -
SELECT students.id,
students.name,
students.lastname
FROM students
WHERE students.name = :name_1 AND students.id < :id_1
Yukarıdaki SELECT sorgusunun çıktısını görüntüleyen tam kod aşağıdaki gibidir -
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, select
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
conn = engine.connect()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
from sqlalchemy import and_, or_
stmt = select([students]).where(and_(students.c.name == 'Ravi', students.c.id <3))
result = conn.execute(stmt)
print (result.fetchall())
Öğrenci tablosunun önceki örnekte kullanılan verilerle doldurulduğu varsayılarak aşağıdaki satır seçilecektir -
[(1, 'Ravi', 'Kapoor')]
or_ () işlevi
OR ile birleştirilen ifadelerin birleşimini üretir. Yukarıdaki örnekte stmt nesnesini or_ () kullanarak aşağıdaki ile değiştireceğiz.
stmt = select([students]).where(or_(students.c.name == 'Ravi', students.c.id <3))
Bu, SELECT sorgusunu takip etmeye etkili bir şekilde eşdeğer olacaktır -
SELECT students.id,
students.name,
students.lastname
FROM students
WHERE students.name = :name_1
OR students.id < :id_1
Değişikliği yaptıktan ve yukarıdaki kodu çalıştırdıktan sonra, sonuç, OR durumuna düşen iki satır olacaktır -
[(1, 'Ravi', 'Kapoor'),
(2, 'Rajiv', 'Khanna')]
asc () işlevi
Artan bir ORDER BY yan tümcesi üretir. İşlev, işlevi bir parametre olarak uygulamak için sütunu alır.
from sqlalchemy import asc
stmt = select([students]).order_by(asc(students.c.name))
İfade aşağıdaki SQL ifadesini uygular -
SELECT students.id,
students.name,
students.lastname
FROM students
ORDER BY students.name ASC
Aşağıdaki kod, öğrenciler tablosundaki tüm kayıtları ad sütununun artan sırasına göre listeler -
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, select
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
conn = engine.connect()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
from sqlalchemy import asc
stmt = select([students]).order_by(asc(students.c.name))
result = conn.execute(stmt)
for row in result:
print (row)
Yukarıdaki kod aşağıdaki çıktıyı üretir -
(4, 'Abdul', 'Sattar')
(3, 'Komal', 'Bhandari')
(5, 'Priya', 'Rajhans')
(2, 'Rajiv', 'Khanna')
(1, 'Ravi', 'Kapoor')
desc () işlevi
Benzer şekilde desc () işlevi, aşağıdaki gibi azalan ORDER BY yan tümcesi üretir -
from sqlalchemy import desc
stmt = select([students]).order_by(desc(students.c.lastname))
Eşdeğer SQL ifadesi -
SELECT students.id,
students.name,
students.lastname
FROM students
ORDER BY students.lastname DESC
Ve yukarıdaki kod satırlarının çıktısı -
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')
(2, 'Rajiv', 'Khanna')
(1, 'Ravi', 'Kapoor')
(3, 'Komal', 'Bhandari')
arasında () işlevi
BETWEEN yüklem yan tümcesi üretir. Bu genellikle belirli bir sütunun değerinin bir aralık arasında olup olmadığını doğrulamak için kullanılır. Örneğin, aşağıdaki kod, id sütunu 2 ile 4 arasında olan satırları seçer -
from sqlalchemy import between
stmt = select([students]).where(between(students.c.id,2,4))
print (stmt)
Ortaya çıkan SQL ifadesi şuna benzer:
SELECT students.id,
students.name,
students.lastname
FROM students
WHERE students.id
BETWEEN :id_1 AND :id_2
ve sonuç aşağıdaki gibidir -
(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')