@flozer

Почему попытка обратиться к только что созданной таблице вызывает ошибку «no such table»?

Не получается создать таблицу в sql3.
Выдаёт ошибку (id скрыл, думаю, его не стоит указывать):

2023-02-11 00:00:34 ERROR    discord.client Ignoring exception in on_message
Traceback (most recent call last):
  File "D:\питон\тест\discord_bots\venv\Lib\site-packages\discord\client.py", line 409, in _run_event
    await coro(*args, **kwargs)
  File "D:\питон\тест\discord_bots\main.py", line 76, in on_message
    cur.execute(f'INSERT INTO warning_{id} VALUES (?, ?)', (message.author.id, 1))
sqlite3.OperationalError: no such table: warning_835**************51764

Часть кода, где возникла ошибка:

if {i.lower().translate(str.maketrans('', '', string.punctuation))
    for i in message.content.split(' ')}.intersection(set(json.load(open('cenz.json')))) != set():
        await message.channel.send(f"{message.author.mention} Тут это запрещено!!!! ")
        await message.delete()
        id = message.guild.id
        base.execute(f'CREATE TABLE IF NOT EXISTS waring_{id}(user_id INT, count INT)')
        base.commit()
        warnings = cur.execute(f'SELECT * FROM waring_{id} WHERE user_id == ?', (message.author.id,)).fetchone()
        if warnings is None:
            cur.execute(f'INSERT INTO warning_{id} VALUES (?, ?)', (message.author.id, 1))
            base.commit()
            await message.channel.send(f'{message.author.mention}, 1-е предупреждение, на 5-ее БАН!!')
        elif warnings[1] == 1:
            cur.execute(f'UPDATE warning_{id} SET count=2 WHERE user_id == ?', (message.author.id,))
            base.commit()
            await message.channel.send(f'{message.author.mention}, 2-е предупреждение, на 5-ее БАН!!')
        elif warnings[1] == 2:
            cur.execute(f'UPDATE warning_{id} SET count=3 WHERE user_id == ?', (message.author.id,))
            base.commit()
            await message.channel.send(f'{message.author.mention}, 3-е предупреждение, на 5-ее БАН!!')
        elif warnings[1] == 2:
            cur.execute(f'UPDATE warning_{id} SET count=4 WHERE user_id == ?', (message.author.id,))
            base.commit()
            await message.channel.send(f'{message.author.mention}, 4-е предупреждение, на 5-ее БАН!!')
        elif warnings[1] == 2:
            cur.execute(f'UPDATE warning_{id} SET count=5 WHERE user_id == ?', (message.author.id,))
            base.commit()
            await message.channel.send(f'{message.author.mention}, 5-е предупреждение, БАН!!')
            await message.author.ban(reason='Я предупреждал!!!')

    await bot.process_commands(message)
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
base.execute(f'CREATE TABLE IF NOT EXISTS waring_{id}(user_id INT, count INT)')
cur.execute(f'INSERT INTO warning_{id} VALUES (?, ?)', (message.author.id, 1))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Слушай автор давай табличку по другому переделаем. Вот так

CREATE TABLE IF NOT EXISTS warning(id INT, user_id INT, count INT);


А то твое изделие зашкварно совсем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы