[英]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.