我似乎無法讓過去的以下錯誤:sqlite3.OperationalError:近 「WHERE」:語法錯誤(Python 2中,sqlite3的)
Traceback (most recent call last):
File "datascraper.py", line 352, in <module>
URL))
sqlite3.OperationalError: near "WHERE": syntax error
它來自下面的代碼(行352標) :
Table = someSQLtable //Has columns (providername, [other columns], providerlink)
SQLDatabase = sqlite3.connect(someSQLDatabase.db)
DBControl = cursor(SQLDatabase)
Name = 'somestring'
URL = 'http://www.someurl.com/stuff/'
[...] # Random other lines
DBControl.execute('''INSERT INTO '''+Table+''' (providername, providerlink)
VALUES (?, ?) WHERE NOT EXISTS (
SELECT * FROM '''+Table+'''
WHERE '''+Table+'''.providerlink = ?
);
352) ''', (Name, URL, URL))
作爲參考,在Python包裹起來的SQL命令應該是這樣的:
INSERT INTO someSQLtable (providername, providerlink)
VALUES ('somestring', 'http://www.someurl.com/stuff/')
WHERE NOT EXISTS (
SELECT * FROM someSQLtable
WHERE someSQLtable.providerlink = 'http://www.someurl.com/stuff/')
我的目標檢查表是否已經包含有問題的條目,方法是檢查表中是否有新檢索的鏈接(這是唯一的),然後寫入表中,如果表尚未存在。
與空白播放顯示,外出現了一個網址上線352
我已經嘗試過修改輸入到另一個字符串,看看是否能工作,改變使用Python的字符串OPS代碼(恐怖!),並喝了一杯。目前似乎沒有任何工作。
我敢肯定,你不需要'FROM':INSERT INTO表(...)SELECT'',''WHERE NOT EXISTS(...)'should工作。 – user432
根據標準,你必須從某些東西中進行選擇,但也許SQLITE放鬆了這一點。 – Lennart
是的,看看另一個答案。 – user432