Skip to main content

O! My Models (omymodels) is a library to generate from SQL DDL Python Models for GinoORM.

Project description

O! My Models

badge1 badge2 badge3

O! My Models (omymodels) is a library to generate from SQL DDL Python Models for GinoORM (I hope to add several more ORMs in future).

You provide an input like:

CREATE TABLE "users" (
  "id" SERIAL PRIMARY KEY,
  "name" varchar,
  "created_at" timestamp,
  "updated_at" timestamp,
  "country_code" int,
  "default_language" int
);

CREATE TABLE "languages" (
  "id" int PRIMARY KEY,
  "code" varchar(2) NOT NULL,
  "name" varchar NOT NULL
);

and you will get output:

from gino import Gino


db = Gino()


class Users(db.Model):

    __tablename__ = 'users'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String())
    created_at = db.Column(db.TIMESTAMP())
    updated_at = db.Column(db.TIMESTAMP())
    country_code = db.Column(db.Integer())
    default_language = db.Column(db.Integer())


class Languages(db.Model):

    __tablename__ = 'languages'

    id = db.Column(db.Integer(), primary_key=True)
    code = db.Column(db.String(2))
    name = db.Column(db.String())

How to install

pip install omymodels

How to use

From cli

omm path/to/your.ddl
# for example

omm tests/test_two_tables.sql

To parse DDL used small library - https://github.com/xnuinside/simple-ddl-parser.

What to do if types not supported in O! My Models and you cannot wait until PR will be approved

First of all, to parse types correct from DDL to models - they must be in types mypping, for Gino it exitst in this file:

omymodels/gino/types.py types_mapping

If you need to use fast type that not exist in mapping - just do a path before call code with types_mapping.update()

for example:

from omymodels.gino import types  types_mapping
from omymodels import create_gino_models

types.types_mapping.update({'your_type_from_ddl': 'db.TypeInGino'})

ddl = "YOUR DDL with your custom your_type_from_ddl"

models = create_gino_models(ddl)

How to contribute

Please describe issue that you want to solve and open the PR, I will review it as soon as possible.

Any questions? Ping me in Telegram: https://t.me/xnuinside

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

omymodels-0.1.0a0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

omymodels-0.1.0a0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file omymodels-0.1.0a0.tar.gz.

File metadata

  • Download URL: omymodels-0.1.0a0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.7 Darwin/19.6.0

File hashes

Hashes for omymodels-0.1.0a0.tar.gz
Algorithm Hash digest
SHA256 4ab1d902ab758f10aa5e74127d8709dc17cbc8ec904b1c2413bbd22130898247
MD5 5e136ca922cf86a3175e1a7f2c2c6c46
BLAKE2b-256 8186ea9966ad75fff44fb35166d5f7f68919eda2e730e5d4ba9a742a734b0c02

See more details on using hashes here.

File details

Details for the file omymodels-0.1.0a0-py3-none-any.whl.

File metadata

  • Download URL: omymodels-0.1.0a0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.7 Darwin/19.6.0

File hashes

Hashes for omymodels-0.1.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 925a61d53acb0e6c0fa081003e8aa70368d0203dc49501ad58774cf7ceb7b329
MD5 2997a864e0471ae748f944958b09c2c1
BLAKE2b-256 24ceaa6d11b2c0a9960c2decd564937ca5c74e4a8669058228162a00b9ff5a4b

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