通过wtforms添加到sqlite中的数据库

时间:2017-07-17 03:32:49

标签: python sqlite

我有我正在做的这个项目,它是我创建的预约系统。唯一的目的是显示管理员如何登录系统,并在涉及这些约会和客户时进行任何类型的编辑和添加。我已经通过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中的数据库中?我尝试了几种不同的方式,但仍然无法正常工作

1 个答案:

答案 0 :(得分:0)

您可以使用sqlalchemy执行此操作。 WTForms也支持它 如果没有看到错误跟踪或实际运行代码,为什么这不起作用很难说。尝试打印command,看看它是否与sqlite3期望的匹配。您将CustomerAddress等对象放入字符串中。当Python与其余的sql查询连接时,Python将使用这些对象的__str__ 另一件事是检查conn.commit()的输出。您可以print(conn.commit())查看sqlite3是否实际返回了任何内容 或者,就像我在开头提到的那样,使用ORM。如果sqlalchemy对您而言太大,请尝试其他轻量级ORM,例如peewee