Windows+;Python+;SQLite3-近距离;“订单”:语法错误

Windows+;Python+;SQLite3-近距离;“订单”:语法错误,python,windows,sqlite,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)上运行时收到一条错误消息“syntax error” 我写的代码在Windows上是非法的? Python版本在cmd.e

我将SQLite3与Python和Windows10一起使用。我编写了以下代码

curs = conn.cursor()
curs.execute('''
    DELETE FROM stack ORDER BY created DESC LIMIT 1;
''')
我在Ubuntu(WSL)上的Bash上执行这些代码。这是成功的。 但是我在cmd.exe(不是WSL)上运行时收到一条错误消息“syntax error”

我写的代码在Windows上是非法的? Python版本在cmd.exe上是3.7.0,在Bash上是3.5.2。

如中所述,
DELETE
仅接受
ORDER BY
LIMIT
,如果在编译文件时设置了该选项,则不仅在编译文件时,而且在从主源创建文件时也设置了该选项。默认情况下不会这样做;它必须特别打开

因此,要使用它,您必须使用sqlite-src-XXXXXX.zip(在页面底部附近),使用它创建sqlite3.c文件(在unixish环境中,您可以使用
--enable update limit
选项运行
/configure
;不确定如何使用MSVC构建指令打开它,因为我从未使用过它们),然后运行make。这将生成启用了它的sqlite3库。然后,您必须让Python使用它们(这也是我不知道如何做的事情;我非常确定在这个主题上还有其他问题,您可以查找答案)

基本上,除非你正在用C或C++编写的东西,而不能直接使用SQLIE3.3,而不是使用一个库版本,使用SQLite中的任何可选特征都是后背的一种痛苦,我得到的印象是大多数人都不去麻烦。

DELETE
仅接受
ORDER BY
LIMIT
,如果在编译文件时以及从主源创建文件时设置了该选项。默认情况下不会这样做;它必须特别打开

因此,要使用它,您必须使用sqlite-src-XXXXXX.zip(在页面底部附近),使用它创建sqlite3.c文件(在unixish环境中,您可以使用
--enable update limit
选项运行
/configure
;不确定如何使用MSVC构建指令打开它,因为我从未使用过它们),然后运行make。这将生成启用了它的sqlite3库。然后,您必须让Python使用它们(这也是我不知道如何做的事情;我非常确定在这个主题上还有其他问题,您可以查找答案)


基本上,除非您正在使用C或C++编写的一些东西,并且可以直接在项目中包含SqLe3.3 C而不是使用库版本,在sqlite中使用任何可选功能都是一件让人头疼的事,我得到的印象是大多数人都不介意。

您的sqlite库版本是使用允许
ORDER BY
LIMIT
with
DELETE
选项创建和编译的吗?它不是由默认值启用的,不在内存中。我想它可能还没有被激活。您的sqlite库版本是使用允许
ORDER BY
LIMIT
with
DELETE
选项创建和编译的吗?它不是由默认值启用的,不在内存中。我想它可能还没有被激活。
>python stack.py
near "ORDER": syntax error