настройка Телеграм бота с sqlite3
по видеоуроку пишу телграм бота с sqlite3, но при запуске возникает ошибка неполного ввода (sqlite3.OperationalError: incomplete input), не понимаю что нужно дополнить, как исправить ошибку подскажите пожалуйста.
import sqlite3
bot = telebot.TeleBot('токен бота')
@bot.message_handler(commands=['start'])
def start(message):
conn = sqlite3.connect('modelsFile.sql')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS models (id int auto_increment primary key, model varchar(150), promt varchar(200)')
conn.commit()
cur.close()
conn.close()
bot.send_message(message.chat.id, 'Привет, я твой менеджер моделей LoRa и промпту к ним для Stable Diffusion, введи название модели : ')
bot.register_next_step_handler(message, model_model)
def model_model(message):
pass
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Савельев Даниил
→ Ссылка
Неправильный синтаксис в SQL-запросе: в строке, где вы создаете таблицу models, у вас отсутствует закрывающая скобка для определения столбцов.
Использование auto_increment: в SQLite используется AUTOINCREMENT, но его нужно использовать в сочетании с INTEGER PRIMARY KEY. Также в SQLite не нужно указывать auto_increment отдельно.
Вот исправленный код:
import sqlite3
import telebot
bot = telebot.TeleBot('токен бота')
@bot.message_handler(commands=['start'])
def start(message):
conn = sqlite3.connect('modelsFile.sql')
cur = conn.cursor()
# Исправленный SQL-запрос
cur.execute('CREATE TABLE IF NOT EXISTS models (id INTEGER PRIMARY KEY AUTOINCREMENT, model TEXT, prompt TEXT)')
conn.commit()
cur.close()
conn.close()
bot.send_message(message.chat.id,
'Привет, я твой менеджер моделей LoRa и промпту к ним для Stable Diffusion, введи название модели : ')
bot.register_next_step_handler(message, model_model)
def model_model(message):
pass
bot.polling(none_stop=True)
P.s. Не стесняйтесь использовать чат GPT для нахождения мелких неисправностей, это намного быстрее.