Mam ciąg nowych obiektów. Wszyscy wyglądają podobnie do tego:sqlalchemy łatwy sposób wstawić lub zaktualizować?
Foo (pk_col1 = X pk_col2 = Y Val = 'bar')
Niektóre z nich są Foo że istnieje (np tylko Val różni się od wiersza w dB) i powinien generować kwerendy aktualizacji. Pozostałe powinny generować inserty.
mogę myśleć kilka sposobów robienia tego, najlepszy byt:
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()
Czy istnieje prostszy sposób?
To wygląda na duplikat http://stackoverflow.com/questions/708762/sqlalchemy-insert-or-replace-equivalent lub http://stackoverflow.com/questions/1330475/how-do-i-efficiently -do-a-bulk-insert-or-update-with-sqlalchemy –
@Duffy - Nie to samo pytanie, co naprawdę muszę rozróżnić w Pythonie aktualizacje z insertów, nie mogę tego zrobić w bazie danych z -portowalne rozszerzenie SQL. – Eloff