- Version:
0.3.2
- Status:
Production/Stable
- Author:
José Antonio Perdiguero López
SQLAlchemy integration for API Star.
Features
This library provides components for injecting SQLAlchemy ORM sessions into your views and event_hooks to handle commit/rollback behavior based on exceptions in your views.
Quick start
Install API Star SQLAlchemy:
pip install apistar-sqlalchemy
Create an API Star application adding components and event hooks:
from apistar_sqlalchemy.components import SQLAlchemySessionComponent
from apistar_sqlalchemy.event_hooks import SQLAlchemyTransactionHook
routes = []
components = [
SQLAlchemySessionComponent(url='sqlite://'),
]
event_hooks = [
SQLAlchemyTransactionHook(),
]
app = App(routes=routes, components=components, event_hooks=event_hooks)
Now you can inject SQLAlchemy Session into your views:
from sqlalchemy.orm import Session
def sqlalchemy_view(session: Session):
# do something
return {'message': 'something done'}
Forget about commit and rollback because there is an event hook that will handle it for you.
Full example
from typing import List
from apistar import App, Route, http, types, validators
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import Session
from apistar_sqlalchemy.components import SQLAlchemySessionComponent
from apistar_sqlalchemy.event_hooks import SQLAlchemyTransactionHook
from apistar_sqlalchemy import database
class PuppyModel(database.Base):
__tablename__ = "Puppy"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
class PuppyType(types.Type):
id = validators.Integer(allow_null=True, default=None)
name = validators.String()
def list_puppies(session: Session) -> List[PuppyType]:
return [PuppyType(puppy) for puppy in session.query(PuppyModel).all()]
def create_puppy(session: Session, puppy: PuppyType) -> http.JSONResponse:
model = PuppyModel(**puppy)
session.add(model)
session.flush()
return http.JSONResponse(PuppyType(model), status_code=201)
routes = [
Route('/puppy/', 'POST', create_puppy),
Route('/puppy/', 'GET', list_puppies),
]
components = [
SQLAlchemySessionComponent(url='sqlite://'),
]
event_hooks = [
SQLAlchemyTransactionHook(),
]
app = App(routes=routes, components=components, event_hooks=event_hooks)
Release files for apistar-sqlalchemy 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| apistar-sqlalchemy-0.3.2.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apistar_sqlalchemy-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.2 kB
Release files / apistar-sqlalchemy-0.3.2.tar.gz
| Download URL | apistar-sqlalchemy-0.3.2.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ae07aa0e63b23590ec25797e74d98b878f634b49ac4ca2690fd370477169f21
|
|
BLAKE2b-256 checksum How to use checksums |
e15abfe2319f837de7352856f04e06afeae99f941006db4377431afd20023d3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / apistar_sqlalchemy-0.3.2-py3-none-any.whl
| Download URL | apistar_sqlalchemy-0.3.2-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
861d3a44ad355640881c375ec476c676fa5e5f5539f3d731c32b0bf99ffd105c
|
|
BLAKE2b-256 checksum How to use checksums |
26e04b107b976fd9d1b6066ba7115f4dde8ab459660b2e11f8488cfa9bba9bef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |