Как вывести определенную запись в sqlite согласно условиям python + Telegram bot
У меня есть телеграм бот. Заранее скажу, что те кто используют моего бота есть в моей базе данных! У меня в боте есть кнопка "Оформить заказ✅" я пытаюсь сделать так, чтобы тот кто нажимал на эту кнопку проверился есть ли он(Его id) в БД и если есть то вывести запись где есть его id (Соответственно у меня кроме id в записи выйдет информация о nickname Имя, Фамилия, телефон и username)
Но когда я пытаюсь вывести эту информацию(запись) используя fetchone() то выводится только первая запись по умолчанию и она не реагирует на то, что, кто нажал на кнопку "Оформить заказ✅". А я хотел бы чтобы она выводила запись согласно id человека нажавшего на кнопку "Оформить заказ✅" то есть, если его id есть в БД то вывести запись(id username имя телефон и тп) где есть его id.
@bot.message_handler(content_types=['text'])
def handler(message):
with sq.connect("bot5.db") as con:
cur = con.cursor()
chat_id = message.chat.id
if message.text == "Оформить заказ✅":
exists = cur.execute("SELECT 1 FROM info1 WHERE id = ?", [chat_id]).fetchone()
if exists == True:
print("DA")
cur.execute(""" SELECT * FROM info1 WHERE id == chat_id """)
data2 = cur.fetchone()
print(data2)
chat_id = message.chat.id
bot.send_message(chat_id, '\n'.join(map(str, data2)))
Фото с моей базы данных
P.S Смог сделать так, думаю проблема в том что я не могу правильно сделать так чтобы выводилась запись(информация) именно того кто нажал на кнопку "Оформить заказ✅" Несмотря на то что, кто нажимает на эту кнопку выводится только первая запись в базе данных!
Ответы (2 шт):
Попробуйте так:
@bot.message_handler(content_types=['text'])
def handler(message):
with sq.connect("bot5.db") as con:
cur = con.cursor()
chat_id = message.from_user.id
if message.text == "Оформить заказ✅":
exists = cur.execute("SELECT * FROM info1 WHERE id = ?", [chat_id]).fetchone()
if exists == True:
print("DA")
cur.execute(""" SELECT * FROM info1 WHERE id == chat_id """)
data2 = cur.fetchone()
print(data2)
chat_id = message.chat.id
bot.send_message(chat_id, '\n'.join(map(str, data2)))
Вот оно современное поколение бот-девелоперов... Эх...
Делаем так:
chat_id = call.message.chat.id
if message.text == "Оформить заказ✅":
cur.execute(f'SELECT * FROM info1 WHERE id = "{chat_id}"')
exists = cur.fetchall()
if exists == True:
print(exists)

