Я пытаюсь создать личную бюджетную программу на Python, и у меня возникают проблемы с обновлением моей базы данных текущих банковских остатков с помощью ввода пользователя. Я храню пользовательские данные (остатки денежных средств) в переменных, но не могу получить данные из переменных в базу данных. Я не получаю никаких сообщений об ошибках, но я могу хранить в базе данных только имена переменных, а не суммы пользовательского ввода, которые представляют переменные.
Вот упрощенная версия моего кода:
# import modules
import sqlite3
# user input
current_acc = float(input("Natwest Current A/C: "))
bills_acc = float(input("Natwest Bills A/C: "))
# update database
conn = sqlite3.connect("databases/bank_accs.db")
c = conn.cursor()
c.execute("""UPDATE bank_accs SET amount = 'current_acc' WHERE rowid = 1"""),
c.execute("""UPDATE bank_accs SET amount = 'bills_acc' WHERE rowid = 2""")
# query database
c.execute("SELECT rowid, * FROM bank_accs")
items = c.fetchall()
for item in items:
print(item)
# commit and close
conn.commit()
conn.close()
Я много гуглил эту проблему, но не могу найти ответ. Единственная реальная подсказка, которую я нашел, была в Stack Overflow, где было предложено заменить имена переменных заполнителями '?', однако было неясно, как вы заменяете заполнители значениями переменных.
Я был бы очень признателен за любую помощь или понимание того, что я делаю неправильно здесь. Я новичок в кодировании, и это мой первый вопрос здесь, надеюсь, мой вопрос имеет смысл.
Спасибо, Пол.
Решение проблемы
как вы упомянули, вы можете использовать "?" знак в качестве заполнителя для переменных, который будет выглядеть так:
sql = "UPDATE bank_accs SET amount =? WHERE rowid = 1"
c.execute(sql, (current_acc,))
sql = "UPDATE bank_accs SET amount =? WHERE rowid = 2"
c.execute(sql, (bills_acc,))
Комментариев нет:
Отправить комментарий