python - 使用两个“=?” 在一个子句中
问题描述
我正在使用 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
解决方案
您需要将参数作为元组传递,更改
cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", Score, Name)
到
cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", (Score, Name))
推荐阅读
- javascript - 如何始终在单击的元素下方打开 contextMenu?
- javascript - 无法在谷歌表单中设置依赖下拉
- ios - Xamarin iOS 在 UIButton 中显示图像和文本
- c# - 为什么在运行时调用重载函数时会发生 RuntimeBinderException?
- android - Android 应用程序 Api 1 与 Api 2 中的 Google Pay
- java - Junit 测试用例 - 错误 - 预期状态:<200> 但原为:<500>
- c# - C# Winforms:当用户选择(鼠标单击)图表上的一个点时如何获取值
- wordpress - wordpress中两个div之间的间距问题
- wordpress - 无法在 wordrpess 中授权 Dropbox api
- ldap - freeradius 和过期用户配置