我有我正在做的这个项目,它是我创建的预约系统。唯一的目的是显示管理员如何登录系统,并在涉及这些约会和客户时进行任何类型的编辑和添加。我已经通过SQLite创建了数据库。 WTForms用于创建不同的表单来添加,添加客户和编辑两者。我遇到的问题是表单有效,但每当我通过表单添加约会时,它都不会像它应该的那样添加到SQLite数据库中。
以下是已输入代码的图片:
command = """ SELECT MAX (id)
FROM {a}
""".format(a='Customer')
cursor.execute(command)
AddedCustomer_data = cursor.fetchone()
AddedCustomer_data = AddedCustomer_data[0]+1
form = AddCustomer(request.form, csrf_enabled=False)
if request.method == 'POST' and form.validate():
Customer = form.Customer.data
Address = form.Address.data
City = form.City.data
State = form.State.data
ZipCode = str(form.ZipCode.data)
EmailAddress = form.EmailAddress.data
PhoneNumber = str(form.PhoneNumber.data)
Problem = form.Problem.data
command = """ INSERT INTO {a}. (Customer, Address, City, State, ZipCode, EmailAddress, PhoneNumber, Problem)
VALUES ('"""+Customer+"""','"""+Address+"""', '"""+City+"""','"""+State+"""','"""+ZipCode+"""','"""+EmailAddress+"""','"""+PhoneNumber+"""',
'"""+Problem+"""')
""".format(a='Customer')
cursor.execute(command)
conn.commit()
这是形式: class AddCustomer(Form):
Customer = TextField(
label = "Customer", validators = [InputRequired()])
Customer_id = IntegerField(
"Customer.id", validators = [InputRequired()])
Address = TextField(
label = "Address", validators = [InputRequired()])
City = TextField(
label = "City", validators = [InputRequired()])
State = TextField(
label = "State", validators = [InputRequired()])
ZipCode = IntegerField(
label = "ZipCode", validators = [InputRequired()])
EmailAddress = TextField(
label = "EmailAddress", validators = [InputRequired()])
PhoneNumber = IntegerField(
label = "PhoneNumber", validators = [InputRequired()])
Problem_id = IntegerField(
label = "Problem.id", validators = [InputRequired()])
Problem = TextField(
label = "Problem", validators = [InputRequired()])
我输入的任何内容是错误的还是需要输入,以便在添加新客户后,它会添加到SQLite中的数据库中?我尝试了几种不同的方式,但仍然无法正常工作
答案 0 :(得分:0)
您可以使用sqlalchemy
执行此操作。 WTForms
也支持它
如果没有看到错误跟踪或实际运行代码,为什么这不起作用很难说。尝试打印command
,看看它是否与sqlite3
期望的匹配。您将Customer
和Address
等对象放入字符串中。当Python与其余的sql查询连接时,Python将使用这些对象的__str__
另一件事是检查conn.commit()
的输出。您可以print(conn.commit())
查看sqlite3
是否实际返回了任何内容
或者,就像我在开头提到的那样,使用ORM
。如果sqlalchemy
对您而言太大,请尝试其他轻量级ORM,例如peewee
。