使用两个'=?'在条款中

时间:2018-09-16 15:29:09

标签: python sqlite

我正在使用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

2 个答案:

答案 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 =?”,(分数,名称,))