Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入+;upsert在sqlite3控制台中工作,但在python上显示语法错误_Python_Sqlite_Sql Insert_Upsert - Fatal编程技术网

插入+;upsert在sqlite3控制台中工作,但在python上显示语法错误

插入+;upsert在sqlite3控制台中工作,但在python上显示语法错误,python,sqlite,sql-insert,upsert,Python,Sqlite,Sql Insert,Upsert,我使用的是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上执行它时,它

我使用的是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.error:接近“on”:语法错误

以下是我在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版本中。从:

UPSERT语法已添加到版本为3.24.0(2018-06-04)的SQLite中

要在python中查找sqlite版本,请执行以下操作:

>>> import sqlite3
>>> sqlite3.sqlite_version

python加载的sqlite3版本中可能不包含
UPSERT
。从:

UPSERT语法已添加到版本为3.24.0(2018-06-04)的SQLite中

要在python中查找sqlite版本,请执行以下操作:

>>> import sqlite3
>>> sqlite3.sqlite_version

请在第二行末尾的引号内加一个空格。@thesilkworm,我试过了,但仍显示语法错误。请在第二行末尾的引号内加一个空格。@thesilkworm,我试过了,但仍显示语法错误是的,你是对的。版本是3.20.1。我该怎么升级呢?恐怕这超出了我的理解范围。也许这是一个很好的起点。是的,你是对的。版本是3.20.1。我该怎么升级呢?恐怕这超出了我的理解范围。这可能是一个很好的起点。