无法使用ON CONFLICT

时间:2019-01-13 20:28:16

标签: python python-3.x sqlite

我正在尝试使用ON CONFLICT,但出现错误“附近“ ON”:语法错误”

根据其他页面,这是一个相当新的东西,我应该更新我的sqlite版本,但是我不知道如何,我当前的sqlite版本是3.21.0

这是我要使用的代码:

cdb.execute("INSERT INTO httpproxies (proxy, first , last , timesalive , timesdead ) VALUES (?, ? , ?, ?, ?) ON CONFLICT(proxy) DO UPDATE SET last = ?,timesalive = timesalive + 1",
    (proxy,t1,t1,1,0,t1))
conndb.commit()

有人可以向我解释如何升级我的sqlite版本或其他代码吗?我已经尝试过pip install --upgrade pysqlite3了,但没有成功,它保持了与以前相同的版本

1 个答案:

答案 0 :(得分:1)

仅从SQLite3 3.24.0版本开始才支持该语法。您没有说明正在运行的平台,因此我无法为您提供更新SQLite3版本的最佳方法的建议。但是,您可以使用其他SQL来实现您的目标。下面是一些伪代码来说明原理:

execute("INSERT INTO httpproxies (proxy, ...)")
if conflict-error
  execute("UPDATE httpproxies SET ... WHERE proxy=?")
end