Skip to main content

Auto generate FastAPI endpoint by SqlAlchemy model for data access

Project description

from fastapi import FastAPI
from sqlalchemy import Integer, Column, String, insert

from sqlalchemy_fastapi_endpoint_factory.main import make_endpoint
from sqlalchemy.orm import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

Base = declarative_base()


class SimpleModel(Base):
    __tablename__ = "simple_model"

    id = Column(Integer, primary_key=True)
    username = Column(String)
    email = Column(String)


engine = create_engine("sqlite:///:memory:", connect_args={"check_same_thread": False})
connection = engine.connect()
ScopedSession = scoped_session(
    sessionmaker(autocommit=False, autoflush=False, bind=connection)
)
SimpleModel.__table__.create(bind=engine, checkfirst=True)

# Test data
TEST_DATA = [
    {"id": 1, "username": "user1", "email": "user1@example.com"},
    {"id": 2, "username": "user2", "email": "user2@example.com"},
    {"id": 3, "username": "user3", "email": "user3@example.com"},
    {"id": 4, "username": "admin", "email": "admin@example.com"},
    {"id": 5, "username": "test", "email": "test@example.com"},
]
with engine.begin() as conn:
    conn.execute(insert(SimpleModel), TEST_DATA)


def execute_query(query):
    with ScopedSession() as session:
        result = session.execute(query).mappings()

    return [dict(row) for row in result]


app = FastAPI()
app.add_api_route(
    "/simple/filter",
    endpoint=make_endpoint(SimpleModel, execute_query),
    methods=["POST"],
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy_fastapi_endpoint_factory-0.0.9.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file sqlalchemy_fastapi_endpoint_factory-0.0.9.tar.gz.

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-0.0.9.tar.gz
Algorithm Hash digest
SHA256 96e4241328f60acc21b8b2b8e4c6542b62c80805e0892fc4d69f3310b2daef67
MD5 cae07cabf323bee25a690e4901523597
BLAKE2b-256 cd51493b25967acaf709e6791cdbf32e03e4ee8ee51cbadf2f929c331dd8c260

See more details on using hashes here.

File details

Details for the file sqlalchemy_fastapi_endpoint_factory-0.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 12776c0480e6764a81c678859db6eadec493ba45c899df5bf89b05a5963e78a6
MD5 e9b37a604230e9fc28704111ebd4a7b5
BLAKE2b-256 1eebfe3e7a75df042ceb7a5d7de6ce7d7fd7a0e683772fa2342b352fbdbd4d42

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page