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

You can define target path where to save models with -t, –target flag:

# for example
omm tests/test_two_tables.sql -t test_path/test_models.py

Small library is used for parse DDL- 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

Changelog

v0.3.0

  1. Generated Index for ‘index’ statement in table_args (not unique constrait as previously)

  2. Fix issue with column size as tuple (4,2)

v0.2.0

  1. Valid generating columns in models: autoincrement, default, type, arrays, unique, primary key and etc.

  2. Added creating table_args for indexes

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.3.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

omymodels-0.3.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file omymodels-0.3.0.tar.gz.

File metadata

  • Download URL: omymodels-0.3.0.tar.gz
  • Upload date:
  • Size: 7.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.3.0.tar.gz
Algorithm Hash digest
SHA256 bfae127b701e5a781cb0592562e074c79f6c42214ca7266c3eec9b5ffc1da693
MD5 248c5dd3ac00045fac0beec89e0703ee
BLAKE2b-256 6dd41cde47e7c2afbc059f2251b291643602a1ee83b735ae42bfc4e8bdef139c

See more details on using hashes here.

File details

Details for the file omymodels-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: omymodels-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a691ab046cdc9f464c933f2a96b7af6b04b2fd2209c5eb86d877d22957c99da4
MD5 483eaec407497e6b8435c7a4b79ff8d8
BLAKE2b-256 bee7c2e9bcc5634c96533338aa5ad054879cfe27837843787b944e9676238e21

See more details on using hashes here.

Supported by

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