Yeni nesneler dizim var. Hepsi bu benzer şekilde görünür:sqlalchemy eklemek veya güncellemek için kolay yolu?
fan (pk_col1 = x pk_col2 = y, val = 'bar')
Bunlardan bazıları ana kadar (yani sadece val db satır farklıdır Foo olan ve güncelleme sorguları oluşturmalı. Diğerleri ekler oluşturmalı.
Bunu yapmanın birkaç yollar geliyor, iyi varlık:
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()
daha kolay bir yolu var mı?
Bu, http://stackoverflow.com/questions/708762/sqlalchemy-insert-or-replace-equivalent veya http://stackoverflow.com/questions/1330475/how-do-i-efficient gibi bir kopyası gibi görünüyor. -do-a-bulk-insert-veya-update-with-sqlalchemy –
@Duffy - Aslında, python'daki eklentileri eklerden ayırt etmem gerektiği gibi aynı soruya değil, veritabanında bunu non-non Taşınabilir SQL uzantısı. – Eloff