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')