Windows + Python + SQLite3 - рядом с "ЗАКАЗАТЬ": синтаксическая ошибка - PullRequest
0 голосов
/ 25 марта 2019

Я использую SQLite3 с Python и Windows10. Я написал следующий код.

curs = conn.cursor()
curs.execute('''
    DELETE FROM stack ORDER BY created DESC LIMIT 1;
''')

И я выполняю этот код на Bash в Ubuntu (WSL). Это удалось. Но я получил сообщение об ошибке «синтаксическая ошибка» при запуске на cmd.exe (не WSL).

>python stack.py
near "ORDER": syntax error

Мой написанный код недопустим в Windows? Версия Python 3.7.0 для cmd.exe и 3.5.2 для Bash.

1 Ответ

2 голосов
/ 25 марта 2019

Как упомянуто в документации , DELETE принимает ORDER BY и LIMIT, только если опция SQLITE_ENABLE_UPDATE_DELETE_LIMIT установлена, когда компиляция sqlite3 не только выполняется. c объединение файла , а также при его создании из основного источника. Это не сделано по умолчанию; он должен быть специально включен.

Таким образом, чтобы использовать его, вам необходимо скачать sqlite-src-XXXXXX.zip (в нижней части страницы), использовать его для создания файла sqlite3.c (в среде unixish, вы бы запустили ./configure с параметром --enable-update-limit; не знаете, как его включить, используя инструкции по сборке MSVC, как я их никогда не использовал), и запустите make. Это произведет библиотеки sqlite3, у которых это включено. Затем вы должны заставить их использовать Python (что-то, что я не знаю, как делать; я почти уверен, что здесь есть другие вопросы по этой теме, ответы на которые вы можете найти).

По сути, если вы не работаете над чем-то написанным на C или C ++ и не можете просто включить sqlite3.c непосредственно в свой проект вместо использования версии библиотеки, то использование любой из дополнительных функций в sqlite является проблемой в тылу и У меня такое впечатление, что большинство людей не беспокоятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...