Skip to main content

Add your description here

Project description

SQLModel support for classApi

This project provides a simple way to use a SQLModel Session inside your classApi views.

First, create your SQLModel engine. Here is a basic example:

# engine.py
from sqlalchemy import create_engine
from sqlmodel import SQLModel

from .model import User  # In this example, User has 3 fields: id, name, and email


sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"

engine = create_engine(sqlite_url, echo=True)

def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

Then create a new base view using make_session_view:

# engine.py
from sqlalchemy import create_engine
from sqlmodel import SQLModel

from sqlmodelclassapi import make_session_view
from .model import User


sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"

engine = create_engine(sqlite_url, echo=True)

def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

SessionView = make_session_view(engine=engine)  # New base view with session support

Now, to create a view, inherit from SessionView instead of BaseView:

# views.py
class ExampleSessionView(SessionView):
    methods = ["GET", "POST"]

    def get(self, *args):
        statement = select(User)
        results = self.session.exec(statement).all()
        return [
            {"id": user.id, "name": user.name, "email": user.email}
            for user in results
        ]

    def post(self, name: str):
        new_user = User(name=name, email=f"{name.lower()}@example.com")
        self.session.add(new_user)
        self.session.commit()
        self.session.refresh(new_user)

        return {"message": f"User '{name}' created successfully!", "user": new_user}

With this setup, all operations in your request run inside the same session, including pre_{method} hooks.

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

sessionviewforclassapisqlmodel-0.1.1.tar.gz (4.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 sessionviewforclassapisqlmodel-0.1.1.tar.gz.

File metadata

File hashes

Hashes for sessionviewforclassapisqlmodel-0.1.1.tar.gz
Algorithm Hash digest
SHA256 661d50c879a539b7cdfcce2ead46dc47858b2bc5a5bbfc31596c88be30ca3931
MD5 a38d7e49d7154c8b4c1fec2f06329c99
BLAKE2b-256 c6682458334789e4d47e47042cd8ecbf6d7dd651efab8c7ad89bf279dd1c4262

See more details on using hashes here.

File details

Details for the file sessionviewforclassapisqlmodel-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sessionviewforclassapisqlmodel-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 abe43d8a774a58515b5e2a41cfd95b9f0f7cbabe5fd79a47fb4201507968d719
MD5 11d2d1859fe2988b8c2522bb9d52cfb7
BLAKE2b-256 3a7f16e0fb020dc72a0a70c4f8355358a1b6fa0117e8ad5a90c65ae780802158

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