используя два '=?' в пункте - PullRequest
       5

используя два '=?' в пункте

0 голосов
/ 16 сентября 2018

Я использую 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 Останавливает сообщения об ошибках, но таблица по-прежнему не обновляется. Любая помощь, почему было бы здорово - то же самое касается первого вопроса, все же. хх

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Вам необходимо передать аргументы в виде кортежа, заменив

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

на

cursor.execute("UPDATE Highscores SET Player_Score = ? WHERE Player_Name = ? ", (Score, Name))
0 голосов
/ 16 сентября 2018

Использовать метод execute как: cursor.execute ("UPDATE Рекорды SET Player_Score =? WHERE Player_Name =?", (Score, Name,))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...