insert + upsert 在 sqlite3 控制台中工作,但在 python 上显示语法错误
insert + upsert works in sqlite3 console, but on python it shows syntax error
我使用的是 sqlite 版本 3.25.1。
当我在 sqlite 控制台中执行以下查询时,它有效:
insert into cases (bi, age, shape, margin, density, severity)
values (5, 67, 3, 5, 3, 1)
on conflict(bi, age, shape, margin, density, severity)
DO UPDATE SET frequency=frequency+1;
但是当我在 python 上执行它时,它说:
sqlite3.OperationalError: near "on": syntax error
这是我在 python 上的代码:
C.execute('insert into cases (bi, age, shape, margin, density, severity) '
'values (5, 67, 3, 5, 3, 1)'
'on conflict(bi, age, shape, margin, density, severity) '
'DO UPDATE SET frequency=frequency+1', ())
我不知道如何让它发挥作用。
可能 UPSERT
未包含在 python 加载的 sqlite3 版本中。来自 sqlite3 doc:
UPSERT syntax was added to SQLite with version 3.24.0 (2018-06-04).
在python中查找sqlite版本:
>>> import sqlite3
>>> sqlite3.sqlite_version
我使用的是 sqlite 版本 3.25.1。 当我在 sqlite 控制台中执行以下查询时,它有效:
insert into cases (bi, age, shape, margin, density, severity)
values (5, 67, 3, 5, 3, 1)
on conflict(bi, age, shape, margin, density, severity)
DO UPDATE SET frequency=frequency+1;
但是当我在 python 上执行它时,它说:
sqlite3.OperationalError: near "on": syntax error
这是我在 python 上的代码:
C.execute('insert into cases (bi, age, shape, margin, density, severity) '
'values (5, 67, 3, 5, 3, 1)'
'on conflict(bi, age, shape, margin, density, severity) '
'DO UPDATE SET frequency=frequency+1', ())
我不知道如何让它发挥作用。
可能 UPSERT
未包含在 python 加载的 sqlite3 版本中。来自 sqlite3 doc:
UPSERT syntax was added to SQLite with version 3.24.0 (2018-06-04).
在python中查找sqlite版本:
>>> import sqlite3
>>> sqlite3.sqlite_version