Ответы пользователя по тегу SQLite
  • Почему заносит одного пользователя несколько раз?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что cursor.fetchone() is None всегда будет False.
    Ответ написан
  • Не работает условие Python, SQLite как решить и почему?

    fenrir1121
    @fenrir1121
    Начни с документации
    chat_verification = {message.chat.id}
    check = cursor.execute(f"SELECT chat_id FROM chat_id_table WHERE chat_id ='{chat_verification}' AND verification = 1

    Вооружайтесь принтами и смотрите что вы наговнокодили в этих двух строчках.
    Примерно каждый второй вопрос в SQLite сводится к ответу не используйте f строки в SQL запросах
    И вы вообще осознаете какой тип данных у chat_verification?

    В целом если 10 строчек кода требуют двух вопросов на хабре берите за привычку разбираться какими данными и типами данных вы манипулируете. Не работает - запускаете отладчик или принтуете и смотрите соответствуют ли данные и типы данных вашим ожиданиям.
    Ответ написан
  • Проблема с внесением данных участника сервера discord в базу данных sqlite3, что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Минимально изучите sql чтобы помощь не была бесполезна и приведите код к приемлемому виду.
    Вероятнее всего после исправления и вопрос отпадет.

    0. Никогда не используйте f-строки, format() и % в sql запросах. Прочитайте хотя бы базовую документацию sqlite3. Прочитайте про первичный ключ, внешний ключ, значения по-умолчанию. Посмотрите какие есть типы данных и какие у них ограничения. К примеру ваш id не влезет в INT
    1. Удалите весь кошмар из on_ready. Никогда не прогоняйте всех пользователей всех серверов. А тем более при каждом запуске. Зачем хранить десятки(сотни, тысячи, миллионы) людей в базе, судя по всему это магазин, вот и добавляйте профиль в момент когда человек начинает им пользоваться
    2. Вместо подобной конструкции из if -select - insert используйте INSERT INTO ... ON CONFLICT ... DO UPDATE SET ...

    ...
    99. Больше не копируйте там, откуда вы это скопировали
    Ответ написан
    Комментировать
  • Как сделать два администратора в /admins?

    fenrir1121
    @fenrir1121
    Начни с документации
    Ответ на конкретный вопрос как убрать какие-то символы - посмотрите документацию по replace(), translate(), join() и что такое срез строк.

    Ответ на реальный вопрос, который вы не смогли сформулировать: не использовать список для admins, когда нужна просто строка и не делать SELECT *, когда нужен только ID
    Ответ написан
    2 комментария
  • Как разделить БД дискорд бота под разные сервера?

    fenrir1121
    @fenrir1121
    Начни с документации
    В таблицу добавить ключевое поле GUILD_ID
    Соответственно запрос изменится на:
    select = '''SELECT * FROM "users" WHERE id = %s AND guild_id = %s'''
    cur.execute(select, (member.id, guild.id))
    Ответ написан
    Комментировать