【问题标题】:How to use Update query in Flask Peewee?如何在 Flask Peewee 中使用更新查询?
【发布时间】:2013-10-08 04:50:33
【问题描述】:

您好,我正在使用 Flask Peewee 并尝试更新 Mercer_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'],
        )

请帮忙!

【问题讨论】:

    标签: python flask models flask-wtforms peewee


    【解决方案1】:

    首先,您似乎使用的是 2.0 之前的语法(filter 方法现已弃用)。我建议查看docs 以获取有关最新版本的信息。

    通常,您不会“更新查询”。实现这一点的两种主要方法是......

    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(name='new name')
        .where(MerchantDetails.id == 42)
    q.execute() # Will do the SQL update query.
    

    从本质上讲,这两者都完成了同样的事情。第一个将对数据库进行两次查询(一个用于选择记录,另一个用于更新记录),而第二个将只使用一个 SQL 调用(用于更新记录)。

    【讨论】:

    • MerchantDetails.update(MerchantDetails.name='new name') 这是一个无效的 Python 语法。
    • 我修好了,这是一个小语法错误
    【解决方案2】:

    我找到了解决办法

    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()
    

    谢谢马克

    【讨论】:

      【解决方案3】:

      我也搜索了这个解决方案,感谢 @Mark 和 @Rohit 我更改了我的代码(使用 PostgreSQL 的 peeweee)并且正在工作。

      要添加一个小改进,即使您不使用该变量,似乎也会执行更新。对我来说是更简单更简洁的代码:

      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()
      

      【讨论】:

        猜你喜欢
        • 2012-06-01
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        • 2022-11-03
        相关资源
        最近更新 更多