繁体   English   中英

如何使用用户输入在 Python 中更新 SQLite3 数据库?

[英]How do I update a SQLite3 database in Python with user input?

我正在尝试在 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,))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM