voglio clonare un oggetto sqlalchemy:Come clonare un oggetto sqlalchemy db con la nuova chiave primaria
ho provato da
product_obj = products.all()[0] #here products is service name
product_obj.product_uid = 'soemthing' #here product_uid is the pk of product model
products.save(product_obj)
si tratta solo di aggiornamento del old_object solo
qui è il codice della funzione products.save
class Service(object):
__model__ = None
def save(self, model):
self._isinstance(model)
db.session.add(model)
db.session.commit()
return model
Sembra piuttosto fastidioso che make_transient non rimuove la chiave primaria. Non avrebbe senso se la creazione di una copia di una voce fosse il caso d'uso principale? – SebK
@SebK Il fatto è che potrebbe essere necessaria una copia dell'oggetto senza alterare il PK (per qualsiasi motivo). Mantenendo il PK, l'API è più inclusiva, in quanto è più pulito cambiare l'ID quando ne hai bisogno piuttosto che mantenere un riferimento ID nel caso in cui ne hai bisogno. –
Grazie! Note anche per i newbees come me che (1) trovano make_transient in 'da sqlalchemy.orm.session import make_transient' e (2) impostando la chiave primaria su None verrà quindi utilizzata la chiave primaria auto-generate su' session.add (obj) 'e' session.commit() '. –