首页 > 解决方案 > 使用两个“=?” 在一个子句中

问题描述

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

******因为,发布 - 在?对于 Player_Name 停止错误消息,但表仍未更新。任何帮助为什么会很棒-尽管如此,第一个问题仍然如此。xx

标签: pythonsqlite

解决方案


您需要将参数作为元组传递,更改

cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", Score, Name)

cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", (Score, Name))

推荐阅读