SQLAlchemy ORM - Application du filtre

Dans ce chapitre, nous verrons comment appliquer un filtre et également certaines opérations de filtrage avec leurs codes.

L'ensemble de résultats représenté par l'objet Query peut être soumis à certains critères à l'aide de la méthode filter (). L'utilisation générale de la méthode de filtrage est la suivante -

session.query(class).filter(criteria)

Dans l'exemple suivant, l'ensemble de résultats obtenu par la requête SELECT sur la table Clients est filtré par une condition, (ID> 2) -

result = session.query(Customers).filter(Customers.id>2)

Cette instruction se traduira par l'expression SQL suivante -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers
WHERE customers.id > ?

Puisque le paramètre lié (?) Est donné comme 2, seules les lignes avec la colonne ID> 2 seront affichées. Le code complet est donné ci-dessous -

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Customers(Base):
   __tablename__ = 'customers'
   
   id = Column(Integer, primary_key = True)
   name = Column(String)

   address = Column(String)
   email = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).filter(Customers.id>2)

for row in result:
   print ("ID:", row.id, "Name: ",row.name, "Address:",row.address, "Email:",row.email)

La sortie affichée dans la console Python est la suivante -

ID: 3 Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
ID: 4 Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]