0

SQLAlchemy: выполнение сырого SQL с параметрами в привязках

14

Я пытаюсь выполнить простой SQL-запрос с параметрами с использованием SQLAlchemy в скрипте Alembic. Вот мой код:

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)

И я получаю следующую ошибку:

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)" []

Решение:

Чтобы исправить эту ошибку, нужно использовать text из SQLAlchemy, и тогда код будет выглядеть так:

from sqlalchemy.sql import text

t = {"code": "123", "description": "one two three"}

op.get_bind().execute(text("insert into field_tags (id, field_id, code, description) " +
                            "values (1,'zasz', :code ,:description)"), **t)

Я не понимаю, в чем была проблема и почему без text не удалось передать параметры. Подскажите, что именно я делал не так и почему это решение работает?

0 ответ(ов)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь