SQLAlchemy ORM - Utilisation de la requête

Toutes les instructions SELECT générées par SQLAlchemy ORM sont construites par objet Query. Il fournit une interface générative, par conséquent les appels successifs renvoient un nouvel objet Query, une copie du précédent avec des critères supplémentaires et des options qui lui sont associés.

Les objets de requête sont initialement générés à l'aide de la méthode query () de la session comme suit -

q = session.query(mapped class)

L'instruction suivante est également équivalente à l'instruction donnée ci-dessus -

q = Query(mappedClass, session)

L'objet de requête a la méthode all () qui renvoie un ensemble de résultats sous la forme d'une liste d'objets. Si nous l'exécutons sur la table de nos clients -

result = session.query(Customers).all()

Cette instruction équivaut effectivement à suivre l'expression SQL -

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

L'objet résultat peut être parcouru à l'aide de la boucle For comme ci-dessous pour obtenir tous les enregistrements dans la table clients sous-jacente. Voici le code complet pour afficher tous les enregistrements dans la table Clients -

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).all()

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

La console Python affiche la liste des enregistrements ci-dessous -

Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]
Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]

L'objet Query a également les méthodes utiles suivantes -

N ° Sr. Méthode et description
1

add_columns()

Il ajoute une ou plusieurs expressions de colonne à la liste des colonnes de résultats à renvoyer.

2

add_entity()

Il ajoute une entité mappée à la liste des colonnes de résultats à renvoyer.

3

count()

Elle renvoie un nombre de lignes que cette requête renverrait.

4

delete()

Il effectue une requête de suppression groupée. Supprime les lignes correspondant à cette requête de la base de données.

5

distinct()

Il applique une clause DISTINCT à la requête et renvoie la nouvelle requête résultante.

6

filter()

Il applique le critère de filtrage donné à une copie de cette requête, à l'aide d'expressions SQL.

sept

first()

Il renvoie le premier résultat de cette requête ou Aucun si le résultat ne contient aucune ligne.

8

get()

Il renvoie une instance basée sur l'identifiant de clé primaire donné fournissant un accès direct à la carte d'identité de la Session propriétaire.

9

group_by()

Il applique un ou plusieurs critères GROUP BY à la requête et renvoie la nouvelle requête résultante

dix

join()

Il crée un SQL JOIN par rapport au critère de cet objet Query et s'applique de manière générative, renvoyant la nouvelle requête résultante.

11

one()

Il renvoie exactement un résultat ou déclenche une exception.

12

order_by()

Il applique un ou plusieurs critères ORDER BY à la requête et renvoie la nouvelle requête résultante.

13

update()

Il exécute une requête de mise à jour en bloc et met à jour les lignes correspondant à cette requête dans la base de données.