tiangolo / full-stack-fastapi-template

Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.
MIT License
24.9k stars 4.22k forks source link

How to support FileField with SQLModel? #590

Open fqzhang42 opened 6 months ago

fqzhang42 commented 6 months ago

How to support FileField with SQLModel? I'm aware of sqlalchemy-file, which is for sqlalchemy to handle file field. Can we still use it with SQLModel?

brunolnetto commented 2 months ago

Does this answer resolve your question?

from sqlalchemy import Column, String
from sqlalchemy_file import FileField, FileConverter

from sqlmodel import SQLModel, create_engine, Session

class MyModel(SQLModel):
    __tablename__ = "my_table"

    id = Column(Integer, primary_key=True)
    name = Column(String)
    file = Column(FileField(converter=FileConverter(url="uploads/")))  # Define file field and converter

engine = create_engine("sqlite:///my_database.db")
SQLModel.metadata.create_all(engine)

session = Session(engine)

# Example usage
new_model = MyModel(name="My File", file="path/to/your/file.txt")
session.add(new_model)
session.commit()

session.close()