Maps an OpenAPI schema to SQLAlchemy models.
Project description
OpenAPI-SQLAlchemy
Translates an OpenAPI schema to SQLAlchemy models.
Installation
python3 -m pip install OpenAPI-SQLAlchemy
# To be able to load yaml file
python3 -m pip install PyYAML
Example
For example, given the following OpenAPI specification:
# example-spec.yml
openapi: "3.0.0"
info:
title: Test Schema
description: API to illustrate OpenAPI-SQLALchemy MVP.
version: "0.1"
paths:
/employee:
get:
summary: Used to retrieve all employees.
responses:
200:
description: Return all employees from the database.
content:
application/json:
schema:
type: array
items:
"$ref": "#/components/schemas/Employee"
components:
schemas:
Employee:
description: Person that works for a company.
type: object
x-tablename: employee
properties:
id:
type: integer
description: Unique identifier for the employee.
example: 0
x-primary-key: true
x-autoincrement: true
name:
type: string
description: The name of the employee.
example: David Andersson.
x-index: true
division:
type: string
description: The part of the company the employee works in.
example: Engineering
x-index: true
salary:
type: number
description: The amount of money the employee is paid.
example: 1000000.00
required:
- id
- name
- division
The SQLALchemy models file then becomes:
# models.py
from yaml import load, Loader
from sqlalchemy.ext.declarative import declarative_base
from openapi_sqlalchemy import init_model_factory
Base = declarative_base()
with open("example-spec.yml") as spec_file:
SPEC = load(spec_file, Loader=Loader)
MODEL_FACTORY = init_model_factory(base=Base, spec=SPEC)
Employee = MODEL_FACTORY(name="Employee")
Documentation
Features
Supported
The following features are supported:
integer
(32 and 64 bit),number
(float only),boolean
,string
,$ref
references for columns and models,- foreign keys,
- many to one relationships and
allOf
inheritance for columns and models.
Not Supported
The following features are on the backlog:
- one to many relationships.
Contributing
Fork and checkout the repository. To install:
python3 -m venv venv
source ./venv/bin/activate
python3 -m pip install -e .[dev]
To run tests:
tox
Make your changes and raise a pull request.
Compiling Docs
python3 -m venv venv
cd docs
make html
This creates the index.html
file in docs/build/html/index.html
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
OpenAPI-SQLAlchemy-0.6.1.tar.gz
(13.8 kB
view details)
Built Distribution
File details
Details for the file OpenAPI-SQLAlchemy-0.6.1.tar.gz
.
File metadata
- Download URL: OpenAPI-SQLAlchemy-0.6.1.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e114d5bb9fcd7231b4794407b4ef817c82f8e6d10da6c0a36a7a3cb78f855c65 |
|
MD5 | 20055557551d04eddfcbc0f8aa84733f |
|
BLAKE2b-256 | 3656c0f0a140ab4e9a24f499742b99ba5e2a44930f35b32c6e4c3154206dc2eb |
File details
Details for the file OpenAPI_SQLAlchemy-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: OpenAPI_SQLAlchemy-0.6.1-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21ad722ec4d7150db77a039d43054ad283dd359fd5a9a078cf780908185c2992 |
|
MD5 | f824a9ef05f6ff1eb2bcf0c24754c9d7 |
|
BLAKE2b-256 | ef9aedfeacfe6f95b07a65866708a2ccd67ff8b152049081328713b937f6e791 |