web-dev-qa-db-fra.com

Comment cloner un objet sqlalchemy db avec une nouvelle clé primaire

Je veux cloner un objet sqlalchemy:

Je l'ai essayé par

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)

il ne fait que mettre à jour le old_object

voici le code de la fonction products.save

class Service(object):

        __model__ = None

       def save(self, model):
            self._isinstance(model)
            db.session.add(model)
            db.session.commit()
            return model
15
Harshit Agarwal

Cela devrait fonctionner:

product_obj = products.all()[0]

db.session.expunge(product_obj)  # expunge the object from session
make_transient(product_obj)  # http://docs.sqlalchemy.org/en/rel_1_1/orm/session_api.html#sqlalchemy.orm.session.make_transient

product_obj.product_uid = 'something'
db.session.add(product_obj)
22

Une approche possible consiste à utiliser dictalchemy :

new_instance = InstanceModel(**old_instance.asdict())
2
Berislav Lopac