{"id":17132152,"url":"https://github.com/perdy/apistar-sqlalchemy","last_synced_at":"2025-08-20T10:33:50.487Z","repository":{"id":57410924,"uuid":"129371026","full_name":"perdy/apistar-sqlalchemy","owner":"perdy","description":"SQLAlchemy integration for API Star","archived":false,"fork":false,"pushed_at":"2023-02-02T03:54:38.000Z","size":97,"stargazers_count":13,"open_issues_count":4,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-31T18:51:31.610Z","etag":null,"topics":["api","apistar","database","rest","sqlalchemy"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perdy.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-13T08:13:43.000Z","updated_at":"2020-02-19T15:12:08.000Z","dependencies_parsed_at":"2023-02-17T13:50:23.386Z","dependency_job_id":null,"html_url":"https://github.com/perdy/apistar-sqlalchemy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perdy%2Fapistar-sqlalchemy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perdy%2Fapistar-sqlalchemy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perdy%2Fapistar-sqlalchemy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perdy%2Fapistar-sqlalchemy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perdy","download_url":"https://codeload.github.com/perdy/apistar-sqlalchemy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230417236,"owners_count":18222516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","apistar","database","rest","sqlalchemy"],"created_at":"2024-10-14T19:26:10.844Z","updated_at":"2024-12-19T10:27:34.844Z","avatar_url":"https://github.com/perdy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"API Star SQLAlchemy\n===================\n|build-status| |coverage| |version|\n\n:Version: 0.3.2\n:Status: Production/Stable\n:Author: José Antonio Perdiguero López\n\nSQLAlchemy integration for API Star.\n\nFeatures\n--------\nThis library provides **components** for injecting SQLAlchemy ORM sessions into your views and **event_hooks** to\nhandle commit/rollback behavior based on exceptions in your views.\n\nQuick start\n-----------\nInstall API Star SQLAlchemy:\n\n.. code:: bash\n\n    pip install apistar-sqlalchemy\n\nCreate an API Star application adding components and event hooks:\n\n.. code:: python\n\n    from apistar_sqlalchemy.components import SQLAlchemySessionComponent\n    from apistar_sqlalchemy.event_hooks import SQLAlchemyTransactionHook\n\n    routes = []\n\n    components = [\n        SQLAlchemySessionComponent(url='sqlite://'),\n    ]\n\n    event_hooks = [\n        SQLAlchemyTransactionHook(),\n    ]\n\n    app = App(routes=routes, components=components, event_hooks=event_hooks)\n\nNow you can inject SQLAlchemy Session into your views:\n\n.. code:: python\n\n    from sqlalchemy.orm import Session\n\n    def sqlalchemy_view(session: Session):\n        # do something\n        return {'message': 'something done'}\n\nForget about **commit** and **rollback** because there is an event hook that will handle it for you.\n\nFull example\n------------\n\n.. code:: python\n\n    from typing import List\n\n    from apistar import App, Route, http, types, validators\n    from sqlalchemy import Column, Integer, String\n    from sqlalchemy.orm import Session\n\n    from apistar_sqlalchemy.components import SQLAlchemySessionComponent\n    from apistar_sqlalchemy.event_hooks import SQLAlchemyTransactionHook\n    from apistar_sqlalchemy import database\n\n\n    class PuppyModel(database.Base):\n        __tablename__ = \"Puppy\"\n        id = Column(Integer, primary_key=True, autoincrement=True)\n        name = Column(String)\n\n\n    class PuppyType(types.Type):\n        id = validators.Integer(allow_null=True, default=None)\n        name = validators.String()\n\n\n    def list_puppies(session: Session) -\u003e List[PuppyType]:\n        return [PuppyType(puppy) for puppy in session.query(PuppyModel).all()]\n\n\n    def create_puppy(session: Session, puppy: PuppyType) -\u003e http.JSONResponse:\n        model = PuppyModel(**puppy)\n        session.add(model)\n        session.flush()\n        return http.JSONResponse(PuppyType(model), status_code=201)\n\n\n    routes = [\n        Route('/puppy/', 'POST', create_puppy),\n        Route('/puppy/', 'GET', list_puppies),\n    ]\n\n    components = [\n        SQLAlchemySessionComponent(url='sqlite://'),\n    ]\n\n    event_hooks = [\n        SQLAlchemyTransactionHook(),\n    ]\n\n    app = App(routes=routes, components=components, event_hooks=event_hooks)\n\n\n.. |build-status| image:: https://travis-ci.org/PeRDy/apistar-sqlalchemy.svg?branch=master\n    :alt: build status\n    :scale: 100%\n    :target: https://travis-ci.org/PeRDy/apistar-sqlalchemy\n.. |coverage| image:: https://codecov.io/gh/PeRDy/apistar-sqlalchemy/branch/master/graph/badge.svg\n    :alt: coverage\n    :scale: 100%\n    :target: https://codecov.io/gh/PeRDy/apistar-sqlalchemy/branch/master/graph/badge.svg\n.. |version| image:: https://badge.fury.io/py/apistar-sqlalchemy.svg\n    :alt: version\n    :scale: 100%\n    :target: https://badge.fury.io/py/apistar-sqlalchemy\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperdy%2Fapistar-sqlalchemy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperdy%2Fapistar-sqlalchemy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperdy%2Fapistar-sqlalchemy/lists"}