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.7.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.7.tar.gz.

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-0.0.7.tar.gz
Algorithm Hash digest
SHA256 ec67ea8863f3bd4553a2fee4c2ff97cb670941677c5d689a4c5768dd93031a77
MD5 d2e7ff57a0c2c044db5174c8ff3a110b
BLAKE2b-256 f6a21d0a38f7729221769aa2bdc0c47f065f799cc71f49c8bcd7884cfd913a0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8fd0494da88819bbd87219bccb206ffd813e072f102fd370a89dfd3ac6b2f219
MD5 f78c211bd80b45320e1dcbfb1fdfcfc1
BLAKE2b-256 8ca4f96a0d84497e0c76743ee1dda4c917ca6061884d3844ef312d3b124d79f9

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