私は一連の新しいオブジェクトを持っています。それらはすべて、これに似たように見える:sqlalchemy簡単に挿入または更新できますか?
フー(pk_col1 = X、pk_col2 = Y、ヴァル=「バー」)
それらのいくつかは、存在する(すなわちのみ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()
は簡単な方法はありますか?
これはhttp://stackoverflow.com/questions/708762/sqlalchemy-insert-or-replace-equivalentやhttp://stackoverflow.com/questions/1330475/how-do-i-efficientlyの複製のようです-do-a-bulk-insert-or-update-with-sqlalchemy –
@Duffy - Pythonで挿入からの更新を実際に区別する必要があるのと同じ質問ではなく、データベースではできません-portable SQL拡張機能です。 – Eloff