簡體   English   中英

Python sqlite3:使用嗎?將表插入不存在的表中嗎? 替代參數

[英]Python sqlite3: INSERT into table WHERE NOT EXISTS, using ? substitution parameter

我正在從不一定唯一的描述列表中創建描述表。 我希望表僅包含不同的描述,因此在將描述插入表中時,我需要檢查它們是否已經存在。 我的代碼(簡體)如下所示:

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()結構解決此問題,但是出於學術原因,這是不允許的。

謝謝

SELECT替換VALUES應該可以

cursor.executemany('''
    INSERT INTO descriptions(desc)
    SELECT (?)
    WHERE NOT EXISTS (
        SELECT *
        FROM descriptions as d
        WHERE d.desc=?)''', 
    zip(descripts, descripts))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM