Skip to main content

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

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.

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

OpenAPI-SQLAlchemy-0.6.2.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file OpenAPI-SQLAlchemy-0.6.2.tar.gz.

File metadata

  • Download URL: OpenAPI-SQLAlchemy-0.6.2.tar.gz
  • Upload date:
  • Size: 13.6 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.2.tar.gz
Algorithm Hash digest
SHA256 71af2af401c75e3dc122e18ff8581f43a4de7f8d664190eab31a03d5ab2969c0
MD5 a3725a9b5329693fd250d67380d9efcd
BLAKE2b-256 45eafe90a22891c498f46e33dad4ad8e10e4ffd2ac759fdac9e2d9606557a194

See more details on using hashes here.

File details

Details for the file OpenAPI_SQLAlchemy-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: OpenAPI_SQLAlchemy-0.6.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 24ca574e7bb2b633f3b853de0835c77c764f759611cd14b0ff936490806a73ef
MD5 9326a64575bc9b9c0d1456d147a4f51d
BLAKE2b-256 1698895138de11217866a316ad9ed64b735002264fc4083b6bef7dc92201d3a1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page