Tengo una secuencia de objetos nuevos. Todos ellos parecen similar a esto:sqlalchemy forma fácil de insertar o actualizar?
Foo (pk_col1 = x, pk_col2 = y, val = 'bar')
Algunos de ellos son Foo que existe (es decir, sólo val difiere de la fila en el PP) y debe generar consultas de actualización. Los demás deben generar inserciones.
puedo pensar en algunas maneras de hacer esto, el mejor ser:
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()
¿Hay una manera más fácil?
Esto parece un duplicado de http://stackoverflow.com/questions/708762/sqlalchemy-insert-or-replace-equivalent o http://stackoverflow.com/questions/1330475/how-do-i-efficiently -do-a-bulk-insert-o-update-with-sqlalchemy –
@Duffy - No es la misma pregunta que realmente necesito distinguir en python las actualizaciones de las inserciones, no puedo hacerlo en la base de datos con un no -portable extensión SQL. – Eloff