pyodbc UPDATE 抛出异常

pyodbc UPDATE throws an exception

我正在制作一个 python 程序来为 Azure SQL 数据库进行 Elo 计算。问题出在最后两个 'cursor.execute' 命令(更新)。

我在此处发布之前删除了部分代码以使其更小,但是所有变量都正确地从 find_winner 和 find_loser 方法传递——打印命令显示正确的值.

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

我试过 运行用 ?和“%s”而不是 winner_new_rating 和 winner_id,但是 3 个版本中的 none 有效。

我有什么明显的遗漏吗?输入存储在变量中的参数的正确方法是什么?

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