This question already has answers here:
How to do an upsert with SqlAlchemy?
(7个答案)
去年关门了。
我想在不同的会话中从两个存在表中创建一个表。
例如:
User {uid, fname, lname}
Salary {uid, salary}
=> NewTable {uid, full_name, salary}

首先我将用户“添加”到NewTable中,薪资为空->确定
n = NewTable(uid=0, full_name=(user.fname+user.lname))
session.add(n)
session.commit()

... 承诺,做点别的。。。
然后我把薪水“合并”成NewTable,薪水没问题,但是全名不见了。
n2 = NewTable(uid=0, salary=100)
session.merge(n2)
session.commit()

为什么?我怎样才能插上一块地呢?或者像这样的自动联合收割机。

最佳答案

毕竟,我找到了解决办法。
使用“选择并更新”以避免覆盖整个新对象
从两个表插入时
对于第一张桌子:

session.add(doc)

对于第二张桌子:
session.query(NewTable).filter(NewTable.uid == doc.uid).update(doc)

关于python - SQLAlchemy upsert ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26423737/

10-13 00:04