mr_qpdb
@mr_qpdb
⏱ - is not eternal

Как сравнить значения с базы данных?

Доброго времени суток.
Имеется база данных, в котором хранятся данные человека. Я сравниваю по id, но это никак у меня не получается.

Вот код:
cursor = db.cursor()
cursor.execute("SELECT telegram_user_id FROM users")
result = cursor.fetchall()
if message.from_user.id not in result: # вот так не работает, работает только если писать result[0] и т.д.
    print("Выдает не зареган... Даже, если этот id есть в бд")
else:
    print("Вы уже зареганы в бд")


Как я описал в комментариях, что не работает, если писать просто result.
А с индексами типа "[0]" и т.д. не могу писать, потому что пользователей может быть бесконечно много.
Как это решить?

Вот сам БД:
5eba7db57ed0c602019326.png
  • Вопрос задан
  • 635 просмотров
Решения вопроса 2
@bubaley
В result тебе попадают массив объектов с одним полем. Сначала нужно получить массив id. Это для проверки на вхождение.
В твоём случае лучше добавить в запрос where telegram_user_id = message.from.user_id.
И проверять если количество результатов в выборке больше или равен 1,тогда он зарегистрирован.
Ответ написан
Как альтернативный вариант, добавить уникальный индекс SQL на тот же telegram_user_id и тогда при добавлении новой записи с тем же индентификатором будет возвращена ошибка, которую нужно обработать в коде. Считать количество может быть дорогой операцией в БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zexer
lists = [(929992640,), (929992640,), (929992640,)]
lists = [i[0] for i in lists]
929992640 in lists # True
Ответ написан
Ваш ответ на вопрос

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

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