Elo*_*off 39 python sqlalchemy
我有一系列新对象.它们看起来都像这样:
Foo(pk_col1 = x,pk_col2 = y,val ='bar')
其中一些是存在的Foo(即只有val与db中的行不同)并且应该生成更新查询.其他人应该生成插入.
我可以想到几种方法,最好的方式:
pk_cols = Foo.table.primary_key.keys()
for f1 in foos:
f2 = Foo.get([getattr(f1, c) for c in pk_cols])
if f2 is not None:
f2.val = f1.val # update
# XXX do we need to do session.add(f2)
# (or at least keep f2 alive until after the commit?)
else:
session.add(f1) # insert
session.commit()
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法?
Dav*_*ick 52
我想你是在new_obj = session.merge(obj)之后.如果主键匹配,则会将处于分离状态的对象合并到会话中,否则将生成新的对象.因此session.save(new_obj)将适用于插入和更新.
| 归档时间: |
|
| 查看次数: |
44688 次 |
| 最近记录: |