2017-07-17 26 views
0

私がやっているこのプロジェクトは、私が作成した予定システムです。唯一の目的は、管理者がシステムにどのようにログインして、それらの予定や顧客について何らかの編集や追加を行う方法を示すことです。私はSQLiteを通してデータベースを作成しました。 WTFormは、顧客を追加し、両方を編集するために異なるフォームを作成するために使用されました。私が抱えている問題は、フォームが機能するということですが、フォームを介して予定を追加するたびに、想定されているようにSQLiteデータベースに追加されません。ここでsqliteのデータベースにwtformsを追加する

型付けされたコードの画像です:

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() 

そして、これは形式です: クラスAddCustomer(フォーム):

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

これを行うにはsqlalchemyを使用できます。 WTFormsもサポートしています。
エラートレースが表示されたり実際にコードが実行されていないと、これが動作しない理由を知るのは難しいです。 commandを印刷して、sqlite3が期待するものと一致するかどうか確認してください。あなたはCustomerAddressのようなオブジェクトを文字列に入れています。 Pythonはこれらのオブジェクトのうち__str__をSQLクエリの残りの部分と連結するときに使用します。
もう1つのことは、conn.commit()の出力を検査することです。 print(conn.commit())を実行して、実際に返されるものがsqlite3かどうかを確認するだけです。
最初に述べたように、ORMを使用してください。 sqlalchemyが大きすぎる場合は、peeweeなどの軽量ORMを試してください。

関連する問題