2016-11-05 15 views
0

私は間違っていることを本当に理解していません。私のテーブルには、次のとおりです。sqlite3.ProgrammingError:指定された数のバインディングが正しくありません。現在のステートメントは6を使用し、5があります

conn.execute('''CREATE TABLE USERS 
     (EMAIL   TEXT NOT NULL, 
     PASSWORD   TEXT NOT NULL, 
     FIRST_NAME  TEXT NOT NULL, 
     LAST_NAME  TEXT NOT NULL, 
     DATE    TEXT NOT NULL, 
     SEX    TEXT NOT NULL);''') 

と私は、テーブルに挿入しようとしています:

conn.executemany("INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?)", [email, password, first_name, last_name, date, sex]) 

私はこのエラーを取得する:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 6, and there are 5 supplied. 

私が質問を追加した場合、エラーがあります同じだが今:

sqlite3.OperationalError: table USERS has 6 columns but 7 values were supplied 

エラーをマークし、質問せずにカンマが異なります。

sqlite3.OperationalError: near ")": syntax error 

変数の値は以下のとおりです。私は本当にここ非常識取得しています

email=str(myapp.register_email.text()) 
    print email 
    first_name=str(myapp.first_name.text()) 
    print first_name 
    last_name=str(myapp.last_name.text()) 
    print last_name 
    date=str(myapp.date.text()) 
    print date 
    password="nht" 
    print password 
    sex=str(myapp.sex.currentText()) 
    print sex 

Python docによって示唆されるように、問題

+0

挿入しようとしている変数の内容を教えてください。 – acornagl

+1

私はそれを更新しました。私が役に立ったらpyqtを使って、値が有効であることを表示します。 –

+0

'len([email、password、first_name、last_name、date、sex])'の結果は何ですか? – acornagl

答えて

1

を把握カントexecutemany()メソッドは値のタプルを必要とします。したがって、次のコードを使用して新しいエントリを挿入することをお勧めします:

conn.executemany("INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?)", [(email, password, first_name, last_name, date, sex)] 
+1

ありがとうございます!それは動作します! –

+0

あなたは大歓迎です;)pythonのドキュメントに感謝! – acornagl

関連する問題

 関連する問題