@anastynero

Как добавить изображение в DB Drowser SQLite и вывести через чат-бота?

Нужно добавить в БД картинку и потом бот должен при запросе вывести рандомное упражнение(название, картинку и описание).
Сначала хотела вывести одним сообщением, но пишет что слишком много символов, разбила на 3 разные сообщения. Пыталась вставить картинку напрямую в БД, не получилось, вставляю путь к изображению, тоже не работает.
async def text(message):
    if message.text == 'Кардио':
        conn = sqlite3.connect('GymBD.db')
        cur = conn.cursor()
        cur.execute("SELECT name, pic, description FROM gym WHERE category = 'Кардио'")
        finds = cur.fetchall()
        name, pic, description = random.choice(finds)
        text = f'{name}'
        text1 = f'{pic}'
        text2 = f'{description}'
        await bot.send_message(message.chat.id, text)
        await bot.send_photo(message.chat.id, text1)
        await bot.send_message(message.chat.id, text2)

6422c40116ca5014547613.jpeg
  • Вопрос задан
  • 164 просмотра
Решения вопроса 2
@o5a
Для вставки данных напрямую почитайте про тип BLOB. Создаете таблицу с полем такого типа и напрямую можете писать в него двоичные данные из файла.

Но ТГ может работать и со ссылками. Только для send_photo строкой может быть или id файла на серверах ТГ, или http-ссылка. Если же это строка с именем локального файла, то нужно его сначала прочитать (чтобы передать данные). Можно сделать так:
# класс для загрузки файла
from aiogram.types import InputFile
...
# его и используем для загрузки нашего файла
await bot.send_photo(message.chat.id, InputFile(text1))


У библиотек есть подробная документация: https://docs.aiogram.dev/en/dev-3.x/api/methods/se...
Ответ написан
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Почитать что такое BLOB, как загружать данные в такое поле и как его читать в питоне
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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