@ghostiki

Как взять фото из SQLite и отправить через телеграм бота?

При попытке достать фото из sql и отправить его через бота в телеграме мне выдавало ошибки
sqlite3.OperationalError: Could not decode to UTF-8 column with text '�PNG

Я пытался его отдельно открывать но была всё та же ошибка.
import telebot
import sqlite3


bot = telebot.TeleBot('TOKEN')
connect = sqlite3.connect(
    'images.sql', check_same_thread=False)
cursor = connect.cursor()


@bot.message_handler(commands=['start'])
def image(message):
    img = cursor.execute(
        f"SELECT Photo FROM image WHERE Code = '1'").fetchone()[0]
    bot.send_photo(message.chat.id, img)


bot.infinity_polling()
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Для начала, картинки - бинарные файлы. Какой тип у поля в базе данных? Если текстовый - поздравляю, картинки уже побились необратимо.

После пересоздания базы с нужным типом данных у этого поля (BLOB) придётся заново загрузить все файлы.

А теперь самое главное: хранить файлы в базе - плохая идея. Правильно хранить их отдельно как файлы в файловой системе, а в базе хранить имя файла. Рекомендую сразу же переделать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@CostGamer
Хорошее видео по этому вопросу (https://www.youtube.com/watch?v=SaCkli1FOUo&t=228s)
Можно получить код картинки, после закинуть его в БД и использовать у бота, где получали код картинки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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