如何在Flask Peewee中使用更新查询?

Roh*_*man 4 python models flask peewee flask-wtforms

嗨,我正在使用Flask Peewee并尝试更新merchant_details模型,但它无法正常工作.以下是我得到的错误:

AttributeError:'SelectQuery'对象没有属性'update'

mdetails = merchant_details.filter(merchant_details.merchant_id==session['userid']).update(
         merchant_name=request.form['merchantname'],
          first_name=request.form['firstname'],
          last_name=request.form['lastname'],
        )
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Mar*_*eth 14

首先,看起来您使用的是2.0之前的语法(该filter方法现已弃用).我建议查看文档以获取最新版本的信息.

通常,您不"更新查询".实现这一目标的两个主要方式是......

1.)使用查询检索对象,然后使用该save()方法更新对象.例如...

mdetails = MerchantDetails.select().where(MerchantDetails.id == 42).get()
mdetails.name = 'new name'
mdetails.save() # Will do the SQL update query.
Run Code Online (Sandbox Code Playgroud)

2.)使用SQL更新语句...

q = MerchantDetails.update(MerchantDetails.name='new name')
    .where(MerchantDetails.id == 42)
q.execute() # Will do the SQL update query.
Run Code Online (Sandbox Code Playgroud)

实质上,这两者都完成了同样的事情.第一个将对数据库进行两个查询(一个用于SELECT记录,另一个用于UPDATE记录),而第二个只用一个SQL调用(用于更新记录).