python - tables - sqlalchemy models
sqlalchemy: ejecutando sql sin procesar con enlaces de parĂ¡metros (1)
Debe obtener el objeto de connection
, llamar a execute()
y pasar los parámetros de consulta como argumentos de palabras clave:
from alembic import op
from sqlalchemy.sql import text
conn = op.get_bind()
conn.execute(
text(
"""
insert into field_tags
(id, field_id, code, description)
values
(1, ''zasz'', :code , :description)
"""
),
**t
)
Consulte también: Cómo ejecutar SQL sin formato en la aplicación SQLAlchemy-flask .
Estoy tratando de ejecutar esta simple declaración de sql sin formato con parámetros con SQLALchemy (dentro de un script de alambique):
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)
Y me sale el siguiente error:
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 solución:
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)