I'm using sqlalchemy==1.1.4. And I completely got stuck trying to execute multivalued insert for model inherited from DeclarativeMeta class.
I have next declaration:
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)
when I try multivalued insert like:
con.execute(
sa.insert(SomeClass).values([
{SomeClass.service_id: '12'},
{SomeClass.service_id: '34'},
])
)
It throws
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
According to Michael Bayer's post link my code seemed to be correct by anyway, but it's even not compiled to sql expression. Though the next works perfectly:
con.execute(
sa.insert(SomeClass).values([
{SomeClass.service_id.key: '12'},
{SomeClass.service_id.key: '34'},
])
)
Anybody knows what's the heck?)