【发布时间】:2009-09-05 04:33:13
【问题描述】:
我有一系列新对象。它们看起来都像这样:
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()
有没有更简单的方法?
【问题讨论】:
-
@Duffy - 与我实际上需要在 python 中区分更新和插入的问题不同,我无法在具有不可移植 SQL 扩展的数据库中做到这一点。
标签: python sqlalchemy