簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM