繁体   English   中英

尝试 sqlite upsert 时如何纠正语法错误?

[英]How do I correct syntax error when attempting sqlite upsert?

我遇到了一个我无法理解/纠正的 SQLite UPSERT 语法错误。 我正在参考https://sqlite.org/lang_UPSERT.html 上的文档

示例代码:

import sqlite3
cnxn = sqlite3.connect(":memory:")
crsr = cnxn.cursor()
# Create a simple table with a Primary Key
crsr.execute("CREATE TABLE t (Id INTEGER PRIMARY KEY, Name TEXT)")
# Add a row
crsr.execute("INSERT INTO t(Id,Name) VALUES(1,'Fred')")
# I would expect the following to update Name for Id=1
crsr.execute("INSERT INTO t(Id,Name) VALUES(1,'Sam') ON CONFLICT(Id) DO UPDATE SET Name=excluded.Name")

相反,返回sqlite3.OperationalError: near "ON": syntax error我做错了什么?

语法是正确的。 我的 SQLite 版本不够新,无法利用该功能。 可悲的是,升级 SQLite 并不像 PIP install --upgrade 那样容易...

以下是一些可能遇到此问题的人的一些方便的提示:

查找您当前的 SQLite 版本

import sqlite3
sqlite3.sqlite_version

从 SQLite 下载站点获取更新的版本(在本例中为 3.24+): https ://www.sqlite.org/download.html

解压缩,然后将 .dll 保存在 [Python 安装目录]/DLLs 文件夹中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM