2016-10-06 19 views
0

私は必ずしもユニークな説明ではないリストから説明のテーブルを作成しています。私は、テーブルには別個の説明しか含まれないようにしたいので、テーブルに説明を挿入する際に、それらがすでに存在するかどうかを確認する必要があります。 (簡体字)私のコードは次のようにのようなものになります。Pythonのsqlite3:テーブルに挿入するWHERE NOT EXISTS、using?代入パラメータ

cur.execute(''' CREATE TABLE descriptions 
      (id INTEGER PRIMARY KEY AUTOINCREMENT, desc TEXT)''') 

descripts = ["d1", "d2", "d3", "d4", "d3", "d1", "d5", "d6", "d7", "d2"] 
cur.executemany(''' 
    INSERT INTO descriptions(desc) 
    VALUES (?) 
    WHERE NOT EXISTS (
     SELECT * 
     FROM descriptions as d 
     WHERE d.desc=?) 
     ''', zip(descripts, descripts)) 

結果はOperationalError: near "WHERE": syntax errorですが、私は私が間違っているつもりだ場所を正確にはわかりません。

ちょうど注:これはPythonでset()構造体を使用して解決できることがわかりましたが、学術的な理由からこれは許可されていません。

おかげ

答えて

1

SELECTによってVALUESが動作するはず交換するには

cursor.executemany(''' 
    INSERT INTO descriptions(desc) 
    SELECT (?) 
    WHERE NOT EXISTS (
     SELECT * 
     FROM descriptions as d 
     WHERE d.desc=?)''', 
    zip(descripts, descripts)) 
関連する問題