我正在使用sqlalchemy==1.1.4
。我完全陷入困境,试图为从insert
类继承的模型执行多值DeclarativeMeta
。
我有下一个声明:
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SomeClass(Base):
id = sa.Column(sa.String(length=64), primary_key=True,
default=lambda: str(uuid4()))
is_active = sa.Column(sa.Boolean, default=True)
service_id = sa.Column(sa.String(length=100), nullable=False)
order = sa.Column(sa.SmallInteger, default=0)
当我尝试多值插入时:
con.execute(
sa.insert(SomeClass).values([
{SomeClass.service_id: '12'},
{SomeClass.service_id: '34'},
])
)
它抛出
sqlalchemy.exc.CompileError: INSERT value for column SomeClass.service_id is
explicitly rendered as a boundparameter in the VALUES clause; a
Python-side value or SQL expression is required
根据Michael Bayer的帖子link,无论如何我的代码似乎都是正确的,但它甚至没有编译成sql表达式。虽然下一个完美无缺:
con.execute(
sa.insert(SomeClass).values([
{SomeClass.service_id.key: '12'},
{SomeClass.service_id.key: '34'},
])
)
谁知道到底是什么?)
答案 0 :(得分:0)
仅当您要传递给insert.values()
的元素列表包含不一致的键时,才会出现该错误,这意味着您可能具有类似[{'name': 'foo', code:'foo'}, {'name': 'bar'}]