2011-07-25 35 views
1

基本的には、x ...の範囲(数字の数)で使用する数値を選択してSQLiteデータベースに挿入したいと考えています。しかし、私は次のエラーを受け取ります:Python APIを使用してSQLiteデータベースを反復処理するにはどうすればよいですか?

line 17, in <module> 
values (?)""") (number) 
sqlite3.ProgrammingError: Incorrect number of bindings supplied. 
The current statement uses 1, and there are 0 supplied. 

ここは私の機能しないコードです。すべての入力が評価されて:

import sqlite3 
conn = sqlite3.connect("usernames.sqlite") 
c = conn.cursor() 
c.execute('''create table numbers (number)''') 

for number in range(21): 
# Insert a row of data 
c.execute("""insert into numbers 
values (?)"""),(number) 

# Save (commit) the changes 
conn.commit() 
# We can also close the cursor if we are done with it 
c.close() 

答えて

0

あなたはvalues (?)"""),(number)に置き忘れ閉じ括弧を持っています。

なぜこれが構文エラーではないかわかりません。これはあなたが使っていたコードですか?

1

executeは、 "?"の場合は値のタプルをとります。

c.execute("""insert into numbers values (?)""", (number,)) 

(number,)は一つの要素でタプルを定義する方法です:パラメータは、あなたが記述する必要があります。

ところで、あなたはexecutemany方法使用して、より効率的にこれを行うことができます。

c.executemany(
    """insert into numbers values (?)""", 
    [(number,) for number in range(21)] 
) 
関連する問題