Как проверить есть ли запись в таблице SQLite3
Создаю Телеграм бота на Python (aiogram). Когда человек вводить команду /subs, нужно проверить есть ли запись в таблице SQLite с его telegram id, если есть то изменить значение 2 полей, если нет то создать запись со всеми полями. Пока есть такой код:
@dp.message_handler(Command('subs'))
async def subs(message: Message):
user_id = message['from']['id']
await message.answer("? Спасибо за оформление подписки. Теперь вам доступен весь функционал бота! Введите команду /start что бы начать")
try:
db = sqlite3.connect('db.db')
curs = db.cursor()
curs.execute("BEGIN")
curs.execute(f"SELECT id_telegram FROM users WHERE id_telegram = {user_id}")
db.commit()
except sqlite3.Error as e:
if con: con.rollback()
print("Ошибка при работе с SQLite", e)
finally:
if db:
curs.close()
print("Соединение с SQLite закрыто")
Ответы (2 шт):
Автор решения: Іван Шнір
→ Ссылка
Проверка таблицы на наличие одной из записи проходит так:
info = curs.execute('SELECT * FROM users WHERE id_telegram=?', (user_id, ))
if info.fetchone() is None:
#Делаем когда нету человека в бд
else:
#Делаем когда есть человек в бд
Автор решения: kredo403
→ Ссылка
Код написанный выше работает некорректно!
if info.fetchone() is None: #условие никогда не выполнится
Я долго с этой темой мучился, вот рабочий код:
info = curs.execute('SELECT * FROM users WHERE id_telegram=?', (user_id, )).fetchone()
#Если запрос вернул 0 строк, то...
if len(info) == 0:
return False
else:
return True