Windows + Python + SQLite3-在“ ORDER”附近:语法错误

时间:2019-03-25 16:11:36

标签: python windows sqlite

我正在将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。

1 个答案:

答案 0 :(得分:2)

the documentation中所述,如果在设置SQLITE_ENABLE_UPDATE_DELETE_LIMIT选项时设置了DELETEORDER 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中的任何可选功能会给您带来麻烦。我给人的印象是大多数人都不会打扰。