我正在使用python(3.5.1),我想只为该玩家更新相关行上的Player_score字段(通过玩家名称选择(它们是唯一的,但不是主键))。我一直在尝试使它像这样工作一段时间,但无济于事,我想不出任何其他方法来使其工作。任何帮助将是巨大的,并且工作代码将是出色的-谢谢xx
def End_Game(Score, Name):
Score = str(Score)
print("Final Score for", Name, "was:", Score)
with sqlite3.connect("Highscores.db") as db:
cursor = db.cursor()
cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", Score, Name)
我收到错误消息:
TypeError: function takes at most 2 arguments (3 given)
,但是如果我删除其中一个引用(只是直接从子句的末尾将其删除),它会说:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 1 supplied.
如果有人可以提供帮助或建议,我将非常感谢。我希望这是一个简单的解决方法,我只是忘记了一些东西。xx
******自此,发布-在?周围添加''。 for Player_Name停止错误消息,但表仍未更新。任何帮助为何会很棒-尽管仍然有第一个问题。 xx
答案 0 :(得分:1)
您需要将参数作为元组传递,更改
cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", Score, Name)
到
cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", (Score, Name))
答案 1 :(得分:-1)
将execute方法用作: cursor.execute(“ UPDATE Highscores SET Player_Score =?WHERE Player_Name =?”,(分数,名称,))