SQLAlchemy ORM - Abfrage verwenden
Alle von SQLAlchemy ORM generierten SELECT-Anweisungen werden vom Query-Objekt erstellt. Es bietet eine generative Schnittstelle, daher geben aufeinanderfolgende Aufrufe ein neues Abfrageobjekt zurück, eine Kopie des ersteren mit zusätzlichen Kriterien und damit verbundenen Optionen.
Abfrageobjekte werden anfänglich mit der query () -Methode der Sitzung wie folgt generiert:
q = session.query(mapped class)
Die folgende Aussage entspricht auch der oben angegebenen Aussage -
q = Query(mappedClass, session)
Das Abfrageobjekt verfügt über die Methode all (), die eine Ergebnismenge in Form einer Objektliste zurückgibt. Wenn wir es auf unserem Kundentisch ausführen -
result = session.query(Customers).all()
Diese Anweisung entspricht effektiv dem folgenden SQL-Ausdruck:
SELECT customers.id
AS customers_id, customers.name
AS customers_name, customers.address
AS customers_address, customers.email
AS customers_email
FROM customers
Das Ergebnisobjekt kann mithilfe der folgenden For-Schleife durchlaufen werden, um alle Datensätze in der zugrunde liegenden Kundentabelle abzurufen. Hier ist der vollständige Code zum Anzeigen aller Datensätze in der Kundentabelle -
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)
Die Python-Konsole zeigt die Liste der Datensätze wie folgt an:
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]
Das Abfrageobjekt verfügt außerdem über die folgenden nützlichen Methoden:
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | add_columns() Es fügt der Liste der zurückzugebenden Ergebnisspalten einen oder mehrere Spaltenausdrücke hinzu. |
2 | add_entity() Es fügt der Liste der zurückzugebenden Ergebnisspalten eine zugeordnete Entität hinzu. |
3 | count() Es gibt eine Anzahl von Zeilen zurück, die diese Abfrage zurückgeben würde. |
4 | delete() Es führt eine Massenlöschabfrage durch. Löscht die mit dieser Abfrage übereinstimmenden Zeilen aus der Datenbank. |
5 | distinct() Es wendet eine DISTINCT-Klausel auf die Abfrage an und gibt die neu resultierende Abfrage zurück. |
6 | filter() Das angegebene Filterkriterium wird mithilfe von SQL-Ausdrücken auf eine Kopie dieser Abfrage angewendet. |
7 | first() Es gibt das erste Ergebnis dieser Abfrage oder Keine zurück, wenn das Ergebnis keine Zeile enthält. |
8 | get() Es gibt eine Instanz zurück, die auf der angegebenen Primärschlüsselkennung basiert und direkten Zugriff auf die Identitätszuordnung der besitzenden Sitzung bietet. |
9 | group_by() Es wendet ein oder mehrere GROUP BY-Kriterien auf die Abfrage an und gibt die neu resultierende Abfrage zurück |
10 | join() Es erstellt eine SQL-Verknüpfung anhand des Kriteriums dieses Abfrageobjekts und wird generativ angewendet, wobei die neu resultierende Abfrage zurückgegeben wird. |
11 | one() Es wird genau ein Ergebnis zurückgegeben oder eine Ausnahme ausgelöst. |
12 | order_by() Es wendet ein oder mehrere ORDER BY-Kriterien auf die Abfrage an und gibt die neu resultierende Abfrage zurück. |
13 | update() Es führt eine Massenaktualisierungsabfrage durch und aktualisiert Zeilen, die mit dieser Abfrage in der Datenbank übereinstimmen. |