Сохранять изображение, сохраненное в столбце LargeBinary SQLAlchemy

Я хочу загрузить файл и сохранить его в базе данных. Я создал столбец LargeBinary.

logo = db.Column(db.LargeBinary) 

Я прочитал загруженный файл и сохранил его в базе данных.

 files = request.files.getlist('file') if files: event.logo = files[0].file.read() 

Является ли это правильным способом хранения изображения как двоичного в базе данных? Как преобразовать двоичные данные в изображение еще раз, чтобы отобразить его?

One Solution collect form web for “Сохранять изображение, сохраненное в столбце LargeBinary SQLAlchemy”

Если вам абсолютно необходимо сохранить изображение в базе данных, то да, это правильно. Как правило, файлы хранятся в файловой системе, и путь хранится в базе данных. Это лучшее решение, потому что веб-сервер обычно имеет эффективный способ обслуживания файлов из файловой системы, в отличие от приложения, отправляющего большие капли данных динамически.


Чтобы подать изображение, напишите представление, которое получает данные изображения и отправляет его в качестве ответа.

 @app.route('/event/<int:id>/logo') def event_logo(id): event = Event.query.get_or_404(id) return app.response_class(event.logo, mimetype='application/octet-stream') 
 <img src="{{ url_for('event_logo', id=event.id }}"/> 

Предпочтительно использовать его с использованием правильного типа mimetype, а не application/octet-stream .


Вы также можете вставлять данные изображения непосредственно в html с помощью uri данных. Это неоптимально, поскольку данные uris отправляются каждый раз, когда страница отображается, а файл изображения может быть кэширован клиентом.

 from base64 import b64encode @app.route('/event/<int:id>/logo') def event_logo(id): event = Event.query.get_or_404(id) image = b64encode(event.logo) return render_template('event.html', event=event, logo=image) 
 <p>{{ obj.x }}<br/> {{ obj.y }}</p> <img src="data:;base64,{{ logo }}"/> 
  • Как получить последнюю запись
  • встроенный в процессор SqlAlchemy итератор / генератор?
  • Как сопоставить один класс с несколькими таблицами с SQLAlchemy?
  • SQLAlchemy: вставка результатов запроса в другую таблицу
  • Как определить отношения таблиц в SQLAlchemy с многоуровневыми / множественными объединениями?
  • Как создать db mysql с sqlalchemy
  • Как получить исходное значение измененных полей?
  • Sqlalchemy удалить подзапрос
  • Как печатать все столбцы в SQLAlchemy ORM
  • sqlalchemy атрибуты отношения внешнего ключа
  • SQLAlchemy - динамически строит фильтр запросов из dict
  • Python - лучший язык программирования в мире.