2016-10-27 7 views
0

値が入力された1つのプレースホルダに対して、リストを介して;ただし、2つのプレースホルダを使用してdictをループするとうまく動作します。私は一見似たような質問をしましたが、これは別のシナリオと思われます。エラーは読む: cur.execute( '' 'INSERT OR Vip_typeのVALUES(、)INTO IGNORE?' ''、(アイテム)) sqlite3.OperationalError:近い ")":構文エラーPython-Sqlite3:リストのforループ内の単一変数のプレースホルダは、次のようになります。sqlite3.OperationalError:near ")":構文エラー

import sqlite3 
conn = sqlite3.connect('vip.sqlite') 
cur = conn.cursor() 
v_lst = ['v1', 'v2', 'v3', 'v4'] 
for item in v_lst: 
    cur.execute('''INSERT OR IGNORE INTO Vip_type VALUES (?,)''', (item,)) 
conn.commit() 
cur.close() 
conn.close() 

答えて

1

,が問題と思われます。代わりに

cur.execute('''INSERT OR IGNORE INTO Vip_type VALUES (?)''', (item,))

を試してみてください。

+0

投稿する前にそれを試しましたが、うまくいきませんでした。エラー:cur.execute( '' 'INSERTまたはIGNORE INTO Vip_type VALUES(?、)' ''、(item)) sqlite3.OperationalError:near " ":構文エラー –

+0

,が1列の表にないコードをテストすると、そのコードは機能します。 – CDe

+0

私は2つの列を持つテーブルを持っています。最初はAUTOINCREMENTを主キーとして、もう1つは前述の表からその値を取得する必要があります。以下のテーブルスキーマでplsを調べることができます:Vip_type( vip_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE、 vip TEXT) –

関連する問題