python3.6在调用的sqlite3执行插入语句存在则更新时报错
建表语句
CREATE TABLE order_temp ( order_day date, item_no text, order_qty real, qty real, input_time timestamp);
CREATE UNIQUE INDEX idx_order_temp_union ON order_temp (order_day, item_no);
python代码:
import sqlite3
db = sqlite3.connect('local.db')
data_list = [('2023-03-22', '80013', '2', '4.00', '2023-03-22 16:03:36')]
sql = "INSERT INTO sale_detail_temp (order_day, item_no, qty,order_qty, input_time) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT (order_day, item_no) DO UPDATE SET qty = excluded.qty, order_qty = excluded.order_qty, input_time = excluded.input_time"
db.executemany(sql, data_list)
db.commit()
报错:
sqlite3.OperationalError: near "ON": syntax error
排错过程
同个多种查询得到sqlite3的版本就是3.21.0
sqlite3.sqlite_version
# 或者连接 SQLite 版本号
conn = sqlite3.connect('path/to/database')
version = conn.execute('SELECT sqlite_version()').fetchone()[0]
print(version)