Maison  >  Article  >  développement back-end  >  Voici quelques options de titre, en gardant à l’esprit le format de la question et en vous concentrant sur le problème principal : **Option 1 (directe et concise) :** * **Comment exécuter des requêtes SQL brutes dans Flask-SQLAlchemy ?** **Opter

Voici quelques options de titre, en gardant à l’esprit le format de la question et en vous concentrant sur le problème principal : **Option 1 (directe et concise) :** * **Comment exécuter des requêtes SQL brutes dans Flask-SQLAlchemy ?** **Opter

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 09:52:02379parcourir

Here are a few title options, keeping in mind the question format and focusing on the core issue:

**Option 1 (Direct and concise):**

* **How to Execute Raw SQL Queries in Flask-SQLAlchemy?** 

**Option 2 (Highlighting the  difference between 1.x and 2.0

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() :

<code class="python">with engine.connect() as connection:
    result = connection.execute(text('SELECT * FROM your_table'))
    # Perform operations on the result</code>

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() :

<code class="python">from sqlalchemy import text

sql = text('select name from penguins')
result = db.engine.execute(sql)
names = [row[0] for row in result]
print(names)</code>

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn