Sqlite3 Python: нельзя использовать "limit" в качестве имени столбца - PullRequest
1 голос
/ 02 августа 2020

Есть 6 столбцов, и по какой-то причине, когда моя программа переходит к этому фрагменту кода во время установки, она просто создает пустой файл без таблицы.

Путем проб и ошибок я обнаружил единственное, что не создавал пустой файл, удалял строку ограничения.

У меня есть другой код, который работает и выглядит одинаково только для разных баз данных, и он отлично работает.

        try:
            # Connect to Database
            conn = sqlite3.connect('databases/Categories.db')
            cur = conn.cursor()

            # Create Table
            cur.execute("""CREATE TABLE categories (
                priority text,
                name text,
                type text,
                increment text,
                total real,
                limit real)""")

            # Commit and Close
            conn.commit()
            conn.close()
        except sqlite3.OperationalError:
            pass

Ответы [ 2 ]

1 голос
/ 02 августа 2020

«limit» - это SQL ключевое слово , например, как в

SELECT foo 
  FROM bar
  LIMIT 10;

Если вы хотите использовать «limit» в качестве имени столбца в sqlite, ему необходимо для цитирования одним из следующих способов:

  • 'limit'
  • «limit»
  • [limit]
  • `limit`

Так, например, ваш оператор может быть

        cur.execute("""CREATE TABLE categories (
            priority text,
            name text,
            type text,
            increment text,
            total real,
            "limit" real)""")

Обратите внимание, что он должен быть заключен в кавычки и в другом операторе, например

"""INSERT INTO categories ("limit") VALUES (?);"""
0 голосов
/ 02 августа 2020

Я провел еще несколько тестов и исправил это, переименовав строку лимита во что-то другое. Оказывается, sqlite3 не любит строки с именем limit.

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