如何使用新主键克隆SQLAlChemy对象

2022-03-10 00:00:00 python sqlalchemy flask-sqlalchemy

问题描述

我要克隆SQLAlChemy对象:

我已尝试:

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)

但它只更新旧对象。

以下是products.save函数的代码:

class Service(object):

        __model__ = None

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

解决方案

这应该可以工作:

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)

相关文章