我似乎无法让过去的以下错误: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