Почему возникает синтаксическая ошибка в 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 шт):
Просто имя таблицы не должно начинаться с цифры.
P.S. А вообще-то стОит ли создавать таблицу под каждого пользователя, а не работать с одной таблицей, где пользователи разделены по идентификаторам?
P.S.S. Кстати, если поставить цифры в одиночные кавычки то и такое имя таблицы допустимо, если очень хочется...