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-1.0.0.tar.gz (33.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-1.0.0.tar.gz.

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c97418214922c2e295e38fda9c30490b3cfb3a8e136027499231ac89b6a02060
MD5 6387af6215d0bbd864772dd1dfac93b0
BLAKE2b-256 53a4ed8986fa49972798dc46424bb219c35fc51f74f6ae837476130776e8d51e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sqlalchemy_fastapi_endpoint_factory-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32455b5d0a2478682261b2eb1a85a29641780e8a9cdbec582f63522b516ec35a
MD5 5db170fabbdd67517e70bf3753b6e8ab
BLAKE2b-256 7e5ae1d6a59f61f7379347ecd12f44aad942407afe57dd74c7b874ba11195b40

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