@Sadons

Как правильнее сделать проверку на присутствие строки в таблице?

find_row_user = await sql.fetch(f'SELECT id FROM users WHERE id = {message.from_user.id};')

Использовал до этого sqlite3, данная строка (если её нет в бд) возвращала None , а в постгре она возвращает = []
И тут уже это не канает, то есть даже если строки в бд нет, оно возвращает [], а не None
Сделал такую проверку:
if str(find_row_user) == '[]':
        await bot.send_message(message.from_user.id,

Но думаю что это не совсем правильно так использовать, или же всё таки можно и так использовать?
До этого использовал так:
if find_row_user is None:
        await bot.send_message(message.from_user.id,
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
select exists(select 1 FROM users WHERE id = <some_id>)

Это вернет true/false.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ZERGeich
@ZERGeich
Количество строк в результате запроса
find_row_user.fetchone()[0]

Если больше 0 - значит что-то есть.
Ответ написан
Комментировать
@Jack444
uid = message.from_user.id
if await sql.fetchrow(f'SELECT True FROM users WHERE id={uid} LIMIT 1'):
    ...
else: 
    ...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы