我试图在python中创建一段代码,允许用户输入他们的用户名,密码和出生日期,然后允许他们更改此信息。这就是我到目前为止所拥有的。
import sqlite3
conn=sqlite3.connect("Database.db")
cursor=conn.cursor()
def createTable():
cursor.execute("CREATE TABLE IF NOT EXISTS userInfo(username TEXT, password TEXT, dateOfBirth TEXT)")
def enterData():
inputUser=input("Enter your username")
inputPass=input("Enter your password")
inputDoB=input("Enter your date of birth")
cursor.execute("INSERT INTO userInfo (username, password, dateOfBirth) VALUES (?, ?, ?)",
(inputUser, inputPass, inputDoB))
conn.commit()
def modifyData():
update=input("would you like to change your username")
if update=="yes":
newUsername=input("Update your username")
cursor.execute("UPDATE userInfo SET username='?' WHERE username='?'",(newUsername, user))
conn.commit
createTable()
enterData()
modifyData()
它允许我输入数据,但我不知道将数据值更新为变量的具体语法。当我尝试运行此代码时,会出现此错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 7 supplied.
非常感谢任何帮助。
答案 0 :(得分:1)
当我复制它并运行发生的第一个错误时,表示未定义变量user
。因此,您需要将其从modifyData
发送到enterData
功能,或者向用户询问。
然后我得到了你提到的错误。只需移除?
代码:
def modify_data():
update = input('Would you like to change your username[y/N]: ')
if update.lower() == 'y':
old_username = input('Old username: ')
new_username = input('Update your username: ')
cursor.execute('UPDATE userInfo SET username=? WHERE username=?', (new_username, old_username))
conn.commit()
顺便说一句,我发现this tool可以帮助您想象它。 (它是免费和开源的)
答案 1 :(得分:-1)
您可能需要raw_input
,而不是input
。
raw_input
从标准输入读取数据并返回它。 input()
与eval(raw_input())
相等:即,它将输入评估为Python代码。
我不是100%确定这是否是你的根本问题,如果你已经在输入中使用了引号?或者你可能不是 - 你可以提供这个程序运行的所有输入和输出吗?