SQLAlchemy upsert

时间:2014-10-17 11:10:06

标签: python mysql sqlalchemy

我想在不同的会话中从两个存在表创建一个表。

例如:

User {uid, fname, lname}
Salary {uid, salary}
=> NewTable {uid, full_name, salary}

首先我"添加"用户进入NewTable,工资为null - >行

n = NewTable(uid=0, full_name=(user.fname+user.lname))
session.add(n)
session.commit()

...提交,做其他事情......

然后我"合并"工资到NewT​​able,工资还可以,但是full_name已经不见了。

n2 = NewTable(uid=0, salary=100)
session.merge(n2)
session.commit()

为什么呢?我怎样才能突出某个领域?或者像这样自动组合。

1 个答案:

答案 0 :(得分:0)

毕竟,我找到了解决办法。

使用“选择并更新”以避免覆盖整个新对象

从两个表中插入时


第一张表

session.add(doc)
第二张表

session.query(NewTable).filter(NewTable.uid == doc.uid).update(doc)