我正在将SQLite3与Python和Windows10结合使用。我写了以下代码。
curs = conn.cursor()
curs.execute('''
DELETE FROM stack ORDER BY created DESC LIMIT 1;
''')
然后我在Ubuntu(WSL)的Bash上执行该代码。那成功了。 但是我在cmd.exe(不是WSL)上运行时收到错误消息“语法错误”。
>python stack.py
near "ORDER": syntax error
我编写的代码在Windows上是非法的? Python版本在cmd.exe上为3.7.0,在Bash上为3.5.2。
答案 0 :(得分:2)
如the documentation中所述,如果在设置SQLITE_ENABLE_UPDATE_DELETE_LIMIT选项时设置了DELETE
和ORDER BY
,则LIMIT
仅接受{{3} }文件,也可以从主源创建它。默认情况下不执行此操作。必须专门将其打开。
因此,要使用它,您必须sqlite3.c amalgamation sqlite-src-XXXXXX.zip(在页面底部附近),然后使用它来创建sqlite3.c文件(在unixish环境中,您需要d使用./configure
选项运行--enable-update-limit
;不知道如何使用MSVC构建说明将其打开,因为我从未使用过它们),然后运行make。那将产生启用它的sqlite3库。然后,您必须使Python使用它们(此外,我不知道该怎么做;我很确定在此主题上还有其他问题可以找到答案)。
基本上,除非您正在使用C或C ++编写东西,并且可以直接在项目中包括sqlite3.c而不是使用库版本,否则使用sqlite中的任何可选功能会给您带来麻烦。我给人的印象是大多数人都不会打扰。