sqlalchemy : l'exécution de sql brut avec des liaisons de paramètres
Je suis en train de lancer cette simple raw instruction sql avec des paramètres avec SQLALchemy (dans un alambic de script) :
from alembic import op
t = {"code": "123", "description": "one two three"}
op.execute("insert into field_tags (id, field_id, code, description) "+
"values (1,'zasz', :code ,:description')", t)
Et j'obtiens l'erreur suivante :
sqlalchemy.exc.StatementError: A value is required for bind parameter
'description' (original cause: InvalidRequestError: A value is required for
bind parameter 'description') "insert into field_tags (id, field_id, code,
description) values (1, 'math',
%(code)s ,%(description)s)" []
La solution:
t = {"code": "123", "description": "one two three"}
from sqlalchemy.sql import text
op.get_bind().execute(text("insert into field_tags (id, field_id, code, description) "+
"values (1,'zasz', :code ,:description')"), **t)
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour obtenir le
connexion
objet, appelexecute()
sur elle et de passer les paramètres de la requête en tant que mot-clé arguments:Voir aussi: Comment exécuter SQL brut dans SQLAlchemy-flacon app.
execute()
sur elle.**t
ett
.execute(..)
à partir de Session est différent de Connexion ou du Moteur.