python - 使用 sqlite3 请求用户输入并在 python 中插入数据库
问题描述
目前,我尝试要求用户在 Python 中输入一些信息(此处为:费用 ID、费用、类别 ID、日期)。但不知从何下手。此步骤不需要输入验证。
我设法访问了我的数据库并手动插入了一些东西。我尝试了 pythoninput
函数的几种方法,但不能将其用作 SQL 字符串中的占位符。
import sqlite3
with sqlite3.connect('Expenses.sqlite') as conn:
# INSERT MANUALLY
script = "INSERT INTO Expense (ExpenseId, Amount, CategoryId, Date) VALUES ('103', '43625.5', '5', '2019-01-20');"
conn.execute(script) # execute the script
conn.commit() # commit changes to the file
# INSERT USER INPUT ???
pass
这是我的想法:
with sqlite3.connect('Expenses.sqlite') as conn:
amount = input("What is the amount?")
script = "SELECT * FROM Category;"
conn.execute(script)
print(script)
category = input("What is the category?")
exp_ID = "SELECT LAST ExpenseId FROM Expense);"
date = datetime.date.today()
script = "INSERT INTO Expense (ExpenseId, Amount, CategoryId, Date) VALUES (exp_ID, amount, category, date);"
conn.execute(script)
conn.commit()
pass
最后,我想实现向用户询问费用金额,然后询问费用类别。应自动添加 ExpenseID 和日期。日期格式为年-月-日。非常感谢您的建议。
解决方案
使用输入函数检索用户输入
user_input = input("Expense Amount: ")
然后使用sqlite3 的占位符
sql = "INSERT INTO TABLE (COLUMN) VALUES (?)"
conn.execute(sql, (user_input,))
**回应您的编辑
您需要添加占位符而不是变量名。
像这样的东西:
script = "INSERT INTO Expense (ExpenseId, Amount, CategoryId, Date) VALUES (?, ?, ?, ?);"
conn.execute(script, (exp_ID,amount,category,date))
推荐阅读
- kubernetes - 无法从发布清单构建 Kubernetes 对象
- java - Java 11 + 网景 JSObject
- amazon-web-services - AWS ECS Cronjob - 如何在任务中运行我的 sh 脚本?
- html - 为什么 50 秒视频的 HTML5 视频时间戳以小时:分钟:秒为单位?
- html - 跨移动设备和桌面的字体大小
- java - 在杰克逊中将空值序列化为零的简单方法
- html - 使用社交媒体按钮的 Html Div
- android - okhttp3 请求在 Kotlin 中给出 android.os.NetworkOnMainThreadException
- python - 如何访问json中的嵌套值
- php - 如何在wordpress中安装php脚本