如何使用 SQLAlchemy 和 session 进行更新?

the*_*man 2 python sqlalchemy

当我想向 MyProducts 表添加一行时,我会执行以下操作:

p = models.MyProducts(code="123456")
db.session.add(p)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

里面models.py我有:

class MyProducts(db.Model):
    id = db.Column(db.Integer, primary_key = True, autoincrement=True)
    code = db.Column(db.Integer)
    quantity = db.Column(db.Integer, default=1)
    comment = db.Column(db.String(99999), default="")
    pricepaid = db.Column(db.Float(264), default="0.0")
Run Code Online (Sandbox Code Playgroud)

如何更新代码为“123456”的行?我努力了

updater = models.MyProducts.query.filter_by(code="123456").update({'comment':"greeeeat product"})
db.session.add(updater)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

但这行不通。

van*_*van 7

假设它只是一种产品:

my_product = models.MyProducts.query.filter_by(code=123456).first()  # @note: code is Integer, not a String, right?
if my_product:
    my_product.comment = "greeeeat product"
    db.session.add(my_product)
    db.session.commit()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这有效。我想我对 add() 的工作原理感到困惑。它如何知道更新行而不只是添加新行? (5认同)