fastapi-storages
                                
                                 fastapi-storages copied to clipboard
                                
                                    fastapi-storages copied to clipboard
                            
                            
                            
                        FastAPI backend storages and ORM extensions
FastAPI Storages
A collection of backend storages and ORM extensions to simplify file management in FastAPI and Starlette projects.
Similar to django-storages project, but aiming to work with a wider range of database ORMs and backends.
Documentation: https://aminalaee.dev/fastapi-storages
Source Code: https://github.com/aminalaee/fastapi-storages
Installation
pip install fastapi-storages
pip install 'fastapi-storages[full]'
Supported integrations
- SQLAlchemy
- SQLModel
- SQLAdmin
Supported storage backends
- FileSystemStorage
- S3Storage
Example
from fastapi import FastAPI, UploadFile
from sqlalchemy import Column, Integer, create_engine
from sqlalchemy.orm import Session, declarative_base
from fastapi_storages import FileSystemStorage
from fastapi_storages.integrations.sqlalchemy import FileType
app = FastAPI()
Base = declarative_base()
engine = create_engine("sqlite:///test.db")
class Example(Base):
    __tablename__ = "example"
    id = Column(Integer, primary_key=True)
    file = Column(FileType(storage=FileSystemStorage(path="/tmp")))
# Create database and table
Base.metadata.create_all(engine)
@app.post("/upload/")
def create_upload_file(file: UploadFile):
    example = Example(file=file)
    with Session(engine) as session:
        session.add(example)
        session.commit()
        return {"filename": example.file.name}
