【问题标题】:ValueError: operation parameter must be str issueValueError: 操作参数必须是 str 问题
【发布时间】:2017-05-23 10:14:15
【问题描述】:

我不断收到此错误“ValueError:操作参数必须是 str”。看了这里,我仍然无法弄清楚我的代码有什么问题。

def returnCard(name, ID, rollingBalance):
    rollingBalance = float(rollingBalance)
    print(rollingBalance)
    with sqlite3.connect("ATM.db") as db:
        cursor = db.cursor()
        sql = 'update Atm set Balance=? Where=?',(rollingBalance, ID,)
        cursor.execute(sql)
        db.commit()
    print("Thank you for using Norther Frock")
    print("Returning card...")
    time.sleep(1)
    print("Have a nice day")
    entryID()

【问题讨论】:

    标签: sql python-3.x sqlite


    【解决方案1】:

    你需要分别传递sql和参数,而不是包含元组的单个参数

    sql = 'update Atm set Balance=? Where=?'
    cursor.execute(sql,(rollingBalance, ID))
    db.commit()
    

    在 Where 子句之后你缺少列名

    【讨论】:

    • ,第 117 行,在 returnCard cursor.execute(sql,(rollingBalance, ID)) ValueError: operation parameter must be str 我实现这个时仍然收到该错误消息
    • 您正在尝试更新余额等于提供的 ID 对吗??
    • 我正在尝试使用 rollingBalance 更新余额! ID 给出了正在更新的用户平衡的程序
    • 它可能会给你类似 > "sqlite3.OperationalError: near "=": syntax error" 的错误,因为你在 where 子句之后缺少列名,否则它工作得很好!
    • 是的!和这里提到的一样。如果答案有用,请接受它,以便其他有相同问题的人更好地了解解决方案。
    【解决方案2】:

    rollingBalance = float(rollingBalance) 那么现在,您希望 rollingBalance 是什么类型? ID 类似,我猜它也不是字符串(虽然我不知道)。

    另外,如果我没记错的话(即来自 PHP),你必须做WHERE ID=%,否则它会尝试将 ID 解释为布尔值并且所有帐户都将被更改!

    尝试将第 6 行替换为 sql = 'update Atm set Balance=%s Where ID=%s'%(str(rollingBalance),str(ID))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2020-10-10
      • 1970-01-01
      • 2017-10-21
      • 2021-02-02
      • 2018-03-27
      • 2020-04-02
      相关资源
      最近更新 更多