【发布时间】:2017-02-01 21:24:24
【问题描述】:
我正在制作一个 Python 程序,用于为 Azure SQL 数据库进行 Elo 计算。问题在于最后两个“cursor.execute”命令(更新)。
我在发布之前取出了部分代码以使其更小,但所有变量都从 find_winner 和 find_loser 方法正确传递——打印命令显示正确的值。
当我按原样运行程序时,它会打印评级的变化和来自 except 块的消息。当我注释掉 UPDATE 方法时,它不会打印异常消息。我能想到的唯一原因是 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")
【问题讨论】:
-
异常信息是什么?
-
糟糕,不是异常消息。它只是打印来自 except 块的消息。
-
所以捕获异常并打印消息。