Exécution de SQL brut dans Flask-SQLAlchemy
Lorsque vous travaillez avec Flask-SQLAlchemy, vous pouvez rencontrer un scénario dans lequel vous devez exécuter du SQL brut requêtes. Ces requêtes peuvent impliquer des jointures de tables complexes ou des vues en ligne. L'approche initiale démontrée dans la question utilisant connection.execute() peut déclencher des erreurs de passerelle. Pour résoudre ce problème, explorons les approches recommandées dans les versions 1.x et 2.0 de SQLAlchemy.
SQLAlchemy 2.0
Pour exécuter du SQL brut dans SQLAlchemy 2.0, vous pouvez exploiter la méthode engine.connect() :
with engine.connect() as connection:
result = connection.execute(text('SELECT * FROM your_table'))
# Perform operations on the result
En utilisant le gestionnaire de contexte engine.connect(), vous vous assurez que la connexion est établie et automatiquement fermée à la sortie du contexte.
SQLAlchemy 1. x
Dans SQLAlchemy 1.x, vous pouvez exécuter du SQL brut à l'aide de la méthode db.engine.execute() en conjonction avec la fonction text() :
from sqlalchemy import text
sql = text('select name from penguins')
result = db.engine.execute(sql)
names = [row[0] for row in result]
print(names)
Notez que la méthode db.engine.execute() exécute les requêtes « sans connexion », ce qui signifie qu'elle n'établit pas de session de base de données. Cette méthode est obsolète dans SQLAlchemy 2.0 et doit être évitée pour des raisons de cohérence et de bonnes pratiques.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3