Почему возникает синтаксическая ошибка в sqlite3 при обращении к таблице через переменную?

У меня есть следующий фрагмент кода:

cursor.execute(f"""CREATE TABLE IF NOT EXISTS {str(description.chat.id)}(
                   date TEXT NOT NULL,
                   des TEXT NOT NULL,
                   task_id INTEGER,
                   PRIMARY KEY("task_id" AUTOINCREMENT),
                   regularity INTEGER,
                   prior INTEGER,
                   ind_reg TEXT
                   )""")
    connect.commit()

Здесь description.chat.id - id беседы с пользователем Telegram (используется библиотека telebot). В момент, когда запускается этот фрагмент, происходит следующая ошибка:

cursor.execute(f"""CREATE TABLE IF NOT EXISTS {str(description.chat.id)}(
sqlite3.OperationalError: near "<тут находится id беседы из цифр>": syntax error

Подскажите, как я могу исправить данную ошибку? Я видел, что в других вопросах предлагали использовать f-строки, и всё срабатывало. Или дело в том, что я не могу именно создать таблицу с помощью переменной?

P.S. Я читал, что форматированные строки небезопасны, но в данном случае проверка не нужна, так как название таблицы получается из telebot-а. Я так же читал, что лучше вообще не использовать переменные в названиях таблицы, но в данном случае я бы хотел оставить, как есть.


Ответы (1 шт):

Автор решения: Alex Titov

Просто имя таблицы не должно начинаться с цифры.

P.S. А вообще-то стОит ли создавать таблицу под каждого пользователя, а не работать с одной таблицей, где пользователи разделены по идентификаторам?

P.S.S. Кстати, если поставить цифры в одиночные кавычки то и такое имя таблицы допустимо, если очень хочется...

→ Ссылка