正在构造更新。。设置。。哪里。。带SQLAalchemy的语句

2024-04-25 06:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列名列表:setcols和{}。我想用SQLAlchemy方法构建一个查询

UPDATE tablename SET setcols[0]= ?, ... WHERE wherecols[0]= ?, ...

我尝试的是

^{pr2}$

还有这个

query = t.update({cn: sa.bindparam(cn) for cn in setcols}). \
        where(t.c[cn] == sa.bindparam(cn) for cn in wherecols)

但这两种方法都不起作用,我得到了以下错误:

sqlalchemy.exc.ArgumentError: SQL expression object or string expected, got object of type <class 'generator'> instead

我读过手册,认为要设置的值可以作为字典提供,但我发现我错了。。。在

有人能帮忙吗?在

我使用的是sqlalchemy-1.1.13。在


Tags: 方法in列表forobjectsqlalchemysaupdate
1条回答
网友
1楼 · 发布于 2024-04-25 06:24:28

问题在于您调用^{}的方式。它需要一个whereclause,而不是生成器对象。使用and_或{}组合这些生成的谓词:

query = t.update(). \
        where(and_(*[t.c[cn] == sa.bindparam(cn) for cn in wherecols])).\
        values({cn: sa.bindparam(cn) for cn in setcols})

相关问题 更多 >