python - tutorial - sqlalchemy manera fácil de insertar o actualizar?
sqlalchemy session insert example (1)
Creo que estás después de new_obj = session.merge (obj) . Esto fusionará un objeto en un estado separado en la sesión si las claves primarias coinciden y creará una nueva de lo contrario. Entonces session.save(new_obj)
funcionará tanto para insertar como para actualizar.
Tengo una secuencia de nuevos objetos. Todos se parecen a esto:
Foo (pk_col1 = x, pk_col2 = y, val = ''bar'')
Algunos de esos son Foo que existen (es decir, solo val difiere de la fila en la base de datos) y deberían generar consultas de actualización. Los demás deben generar inserciones.
Puedo pensar en algunas maneras de hacer esto, siendo la mejor:
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 mas facil?