Skip to main content

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

Read the Docs

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.

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

OpenAPI_SQLAlchemy-0.6.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

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

Hashes for OpenAPI-SQLAlchemy-0.6.1.tar.gz
Algorithm Hash digest
SHA256 e114d5bb9fcd7231b4794407b4ef817c82f8e6d10da6c0a36a7a3cb78f855c65
MD5 20055557551d04eddfcbc0f8aa84733f
BLAKE2b-256 3656c0f0a140ab4e9a24f499742b99ba5e2a44930f35b32c6e4c3154206dc2eb

See more details on using hashes here.

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

Hashes for OpenAPI_SQLAlchemy-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 21ad722ec4d7150db77a039d43054ad283dd359fd5a9a078cf780908185c2992
MD5 f824a9ef05f6ff1eb2bcf0c24754c9d7
BLAKE2b-256 ef9aedfeacfe6f95b07a65866708a2ccd67ff8b152049081328713b937f6e791

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.0

2 files

0.6.3

2 files

0.6.2

2 files

This release

0.6.1 This release

2 files

0.6.0

3 files

0.5.0

2 files

0.4.0

2 files

0.3.0

1 file

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page