29
I (bir alembic komut içinde) sqlalchemy ile parametrelerle bu basit ham sql deyimini çalıştırmak çalışıyorum:sqlalchemy: parametre ciltleri ile ham sql yürütme
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)
Ve aşağıdaki hatayı alıyorum:
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)" []
çözeltisi:
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)
Bunu denedim (argüman olarak ** t geçişi) ve şunu elde ettim: TypeError: execute() beklenmedik bir anahtar kelime argümanı var 'code' –
@MaxL., Kötüyüm, güncellenmiş cevaptan kodu deneyebilir misiniz? Fikir, bağlantı nesnesini almak ve üzerinde 'execute()' işlevini çağırmaktır. – alecxe
Teşekkürler, bu yardımcı oldu, yapmak zorunda başka bir değişiklik vardı: sorgu metin fonksiyonu (sqlalchemy.sql ithalat metninden) tarafından sarılmış olması gerekir, cevabınıza + 1 verdi, metin() wrapp eklemek, (Yukarıdaki güncellememde olduğu gibi), kesin cevap olarak kabul edeceğim. –