Fork me on GitHub


SQLAlchemy-ImageAttach is a SQLAlchemy extension for attaching images to entity objects. It provides the following features:

Storage backend interface
You can use file system backend on your local development box, and switch it to AWS S3 when it’s deployed to the production box. Or you can add a new backend implementation by yourself.
Maintaining multiple image sizes
Any size of thumbnails can be generated from the original size without assuming the fixed set of sizes. You can generate a thumbnail of a particular size if it doesn’t exist yet when the size is requested. Use RRS (Reduced Redundancy Storage) for reproducible thumbnails on S3.
Every image has its URL
Attached images can be exposed as a URL.
SQLAlchemy transaction aware
Saved file are removed when the ongoing transaction has been rolled back.
Tested on various environments
  • Python versions: Python 2.6–2.7, 3.2–3.5, PyPy
  • DBMS: PostgreSQL, MySQL, SQLite
  • SQLAlchemy: 0.8 or higher (tested on 0.8 to 1.1; see CI as well)


It’s already available on PyPI, so just use pip:

$ pip install SQLAlchemy-ImageAttach
Latest PyPI version

Open source

SQLAlchemy-ImageAttach is an open source software written by Hong Minhee. The source code is distributed under MIT license, and you can find it at GitHub repository:

$ git clone git://

If you find any bug, please create an issue to the issue tracker. Pull requests are also always welcome!

Check out SQLAlchemy-ImageAttach Changelog as well.

Build Status Coverage Status