我从不一定唯一的描述列表中创建描述表。我希望该表只包含不同的描述,因此在将描述插入表中时,我需要检查它们是否已经存在。我的代码(简化)如下所示:
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()
结构来解决这个问题,但出于学术原因,这是不允许的。
由于
答案 0 :(得分:1)
要VALUES
替换SELECT
应该
cursor.executemany('''
INSERT INTO descriptions(desc)
SELECT (?)
WHERE NOT EXISTS (
SELECT *
FROM descriptions as d
WHERE d.desc=?)''',
zip(descripts, descripts))