沙滩星空的博客沙滩星空的博客

python中sqlalchemy更新数据和对象拷贝的坑

起因

使用python的sqlalchemy库进行ORM数据模型操作。查询得出 model 对象,然后对数据进行更新,期间没有显式更改 model 的操作,但最终 model 数据对象被更新。导致后续业务判断出错。

伪代码如下:

from models import Product

......
if model:
    print(model.quantity) # 101
    db_session.query(Product).filter(Product.id == model.id).update({"quantity":233})
    print(model.quantity) # 233

解决

使用 copy.copy() 方法拷贝对象。

更正如下

from models import Product
from copy import copy

if model:
    print(model.quantity) # 101
    model_before = copy(model)
    db_session.query(Product).filter(Product.id == model.id).update({"quantity":233})
    print(model.quantity) # 233
    print(model_before.quantity) # 101
未经允许不得转载:沙滩星空的博客 » python中sqlalchemy更新数据和对象拷贝的坑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址