Python3 | SQL запрос не выполнен - PullRequest
0 голосов
/ 01 апреля 2020

Итак. Простой запрос SELECT * FROM access WHERE {arg}=TRUE, где arg = "friends_grinder".

File "/root/python/NaVK/source/main/FriendsGrinderEngine.py", line 51, in __routine
    users = ADB.get_authorized_users('friends_grinder')
  File "/root/python/NaVK/source/database/AccessDB.py", line 30, in get_authorized_users
    users = self.__conn.cursor().execute(f'SELECT * FROM access WHERE {arg}=TRUE').fetchall()
sqlite3.OperationalError: no such column: TRUE

Я не получаю эту ошибку на windows. Но я получаю его в Ubuntu.
friends_grinder столбец равен BOOLEAN.

1 Ответ

0 голосов
/ 01 апреля 2020

Из документации :

Начиная с SQLite 3.23.0 (2018-04-02), SQLite распознает идентификаторы "TRUE" и "FALSE" как логические литералы , если и только если эти идентификаторы еще не используются для какого-либо другого значения. Если столбцы, таблицы или другие объекты уже называются TRUE или FALSE, то для обратной совместимости идентификаторы TRUE и FALSE ссылаются на эти другие объекты, а не на логические значения.

Булевы идентификаторы TRUE и FALSE - это просто псевдонимы для целых значений 1 и 0 соответственно. Однако, если ИСТИНА или ЛОЖЬ происходят в правой части оператора IS, то они формируют новые унарные постфиксные операторы «ИСТИНА» и «ЛОЖЬ», которые проверяют логическое значение операнда слева.

Если вы получаете no such column: TRUE как ошибку, это означает, что версия sqlite, используемая в этой системе, слишком старая для распознавания идентификатора. Обновите или используйте 1.

...