Обновить несколько столбцов: имя пользователя исчезает - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь обновить свои данные пользователя с помощью Python и SQLite.

Цель состоит в том, чтобы обновить все столбцы моего пользователя за один раз.

Мой код:

def update():
  new_username = input("Input your NEW username:\n")
  new_firstname = input("Input your NEW firstname:\n")
  new_lastname = input("Input your NEW lastname:\n")
  new_email = input("Input your NEW email:\n")
  new_password = input("Input your NEW password:\n")
  update_customer =("""UPDATE customer SET username = ? AND firstname = ? AND lastname = ? AND email = ? AND password = ?""")
  cursor.execute(update_customer, [(new_username), (new_firstname), (new_lastname), (new_email), (new_password)])

Я проверил базу данных до и после запуска моей функции python.Однако изменения не сохраняются в базе данных.Ничего не меняется, кроме исчезающего имени пользователя.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Вам необходимо сохранить изменения после завершения транзакции.

cursor = conn.cursor() # Get cursor
cursor.execute(...)    # Execute some SQL queries
# This is the line you've missed.
# You need to call this function every time you update the data in database.
cursor.commit()

Кроме того, ваш синтаксис SQL для команды «ОБНОВИТЬ» неверен.Используйте запятые вместо «И» при указании нескольких столбцов, которые нужно изменить.Как это:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
0 голосов
/ 22 декабря 2018

Вы не используете AND для установки дополнительных столбцов.Вместо этого вы разделяете столбцы как SET с помощью запятой.

Итак, вы хотите

update_customer =("""UPDATE customer SET username = ?, firstname = ?, lastname = ?, email = ?, password = ?""")

, а затем предложение WHERE, если все строки не имеют одинаковых значений.

Согласно: -

enter image description here

SQL, понятный SQLite - ОБНОВЛЕНИЕ

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