pyodbc UPDATE 抛出异常



我正在制作一个python程序,为Azure SQL数据库执行Elo计算。问题出在最后两个"cursor.execute"命令(UPDATEs)上。

在这里发布之前,我取出了部分代码以使其更小,但是所有变量都从find_winner和find_loser方法正确传递 - 打印命令显示正确的值。

当我按原样运行程序时,它会打印评级的变化和来自 except 块的消息。当我注释掉 UPDATE 方法时,它不会打印 except 消息。我能想出的唯一原因是来自find_winner和find_loser元组的变量没有正确输入到 SQL 语句中。

我尝试使用 ? 和"%s"而不是 winner_new_rating 和 winner_id 运行它,但 3 个版本都不起作用。

我缺少什么明显的东西吗?输入存储在变量中的参数的正确方法是什么?

def rate():
    try:
        (winner_rating,winner_name,winner_id) = find_winner()
        (loser_rating,loser_name,loser_id) = find_loser()
        cursor = conn.cursor()
        print(winner_name, "wins", winner_rating, "-->", winner_new_rating)
        print(loser_name, "loses:", loser_rating, "-->", loser_new_rating)
        cursor.execute("UPDATE KIDS SET Rating = winner_new_rating WHERE LocalID = winner_id")
        cursor.execute("UPDATE KIDS SET Rating = loser_new_rating WHERE LocalID = loser_id")
        conn.commit()
    except:
        print("Rate method error")

这是正确的语法:

try:
    cursor.execute("UPDATE KIDS SET Rating = ? WHERE LocalID = ?", 
        str(winner_new_rating), winner_id)
    cursor.execute("UPDATE KIDS SET Rating = ? WHERE LocalID = ?",
        str(loser_new_rating), loser_id)
except DatabaseError as e:
    print(str(e))

相关内容

  • 没有找到相关文章

最新更新