相关疑难解决方法(0)

使用session.query通过SQLAlchemy ORM更新连接表

使用MySQL,我想生成这个SQL:

UPDATE tableA
INNER JOIN tableB
ON tableA.some_id = tableB.some_id
SET tableA.foo = 1
WHERE tableB.bar IN ('baz','baaz')
Run Code Online (Sandbox Code Playgroud)

这是我的SQLAlchemy查询:

session.query(tableA).join(tableB, tableA.some_id == tableB.some_id) \
                     .filter(tableB.bar.in_(['baz','baaz']))\
                     .update({tableA.foo: 1})
Run Code Online (Sandbox Code Playgroud)

但它生成的SQL是这样的(多表更新,没有连接条件,这不是我想要的):

UPDATE tableA, tableB 
SET tableA.foo = 1
WHERE tableB.bar IN ('baz','baaz')
Run Code Online (Sandbox Code Playgroud)

我已经尝试将.join更改为另一个.filter来指定连接条件,但没有解决问题.如何强制使用这个简单的更新语句来进行正确的连接?

python mysql sqlalchemy

9
推荐指数
2
解决办法
4616
查看次数

标签 统计

mysql ×1

python ×1

sqlalchemy ×1