[英]How to use Update query in Flask Peewee?
嗨,我正在使用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'],
)
请帮忙!
首先,看起来您使用的是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.
2.)使用SQL更新语句...
q = MerchantDetails.update(MerchantDetails.name='new name')
.where(MerchantDetails.id == 42)
q.execute() # Will do the SQL update query.
实质上,这两者都完成了同样的事情。 第一个将对数据库进行两次查询(一个用于SELECT记录,另一个用于UPDATE记录),而第二个只用一个SQL调用(用于更新记录)。
我得到了解决方案
mdetails = merchant_details.update(
merchant_name=request.form['merchantname'],
first_name=request.form['firstname'],
last_name=request.form['lastname'],
street_1=request.form['street1'],
street_2=request.form['street2'],
state=request.form['state'],
city=request.form['city'],
phone=request.form['phone'],
zipcode=request.form['zip'],
).where(merchant_details.merchant_id==session['userid'])
mdetails.execute()
无论如何谢谢马克
我也搜索了这个解决方案,感谢@Mark和@Rohit我改变了我的代码(peeweee与PostgreSQL)并且正在工作。
要添加一个小的改进,即使您不使用该变量,似乎也会执行更新。 对我来说,更简单 , 更清洁的代码:
merchant_details.update(
merchant_name=request.form['merchantname'],
first_name=request.form['firstname'],
last_name=request.form['lastname'],
street_1=request.form['street1'],
street_2=request.form['street2'],
state=request.form['state'],
city=request.form['city'],
phone=request.form['phone'],
zipcode=request.form['zip'],
).where(merchant_details.merchant_id==session['userid']).execute()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.