Roh-SQL in Flask-SQLAlchemy ausführen
Bei der Arbeit mit Flask-SQLAlchemy kann es vorkommen, dass Sie Roh-SQL ausführen müssen Abfragen. Bei diesen Abfragen kann es sich um komplexe Tabellenverknüpfungen oder Inline-Ansichten handeln. Der in der Frage gezeigte anfängliche Ansatz mit „connection.execute()“ kann Gateway-Fehler auslösen. Um dieses Problem zu beheben, untersuchen wir die empfohlenen Ansätze in den SQLAlchemy-Versionen 1.x und 2.0.
SQLAlchemy 2.0
Um Roh-SQL in SQLAlchemy 2.0 auszuführen, können Sie Folgendes nutzen die Methode engine.connect():
with engine.connect() as connection:
result = connection.execute(text('SELECT * FROM your_table'))
# Perform operations on the result
Durch die Verwendung des Kontextmanagers engine.connect() stellen Sie sicher, dass die Verbindung hergestellt und beim Verlassen des Kontexts automatisch geschlossen wird.
SQLAlchemy 1. x
In SQLAlchemy 1.x können Sie Roh-SQL mit der Methode db.engine.execute() in Verbindung mit der Funktion text() ausführen:
from sqlalchemy import text
sql = text('select name from penguins')
result = db.engine.execute(sql)
names = [row[0] for row in result]
print(names)
Beachten Sie, dass die Methode db.engine.execute() Abfragen „verbindungslos“ ausführt, d. h. keine Datenbanksitzung aufbaut. Diese Methode ist in SQLAlchemy 2.0 veraltet und sollte aus Gründen der Konsistenz und Best Practices vermieden werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3