Skip to main content

JohnnieRunner is SQLAlchemy Wrapper for Active Record pattern O/R Mapper

Dependencies

  • Python2.7 or Later

  • SQLAlchemy >= 1.0.8

  • MySQL-Python >= 1.2.5

Support RDBMS

  • MySQL

Goal

  • Add Rails like ActiveRecord Api

  • Database Migration

  • All Supports of SQLAlchemy RDBMS

Usage

Prepare

  1. generate testing database

    $ mysql -u root -p
    mysql> create database johnnie;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> exit;
    Bye
  2. define O/R Mapper structure

    from johnnie import AbstractModel, create_session
    from johnnie.types import Column, String, Integer
    
    session = create_session('localhost', 'root', 'root user password', 'johnnie')
    
    
    class Repositories(AbstractModel):
        class Meta:
            session = session
    
        id = Column('id', Integer(unsigned=True), primary_key=True)
        name = Column('name', String(255), nullable=False)
        author = Column('author', String(255), nullable=False)
        url = Column('url', String(255), nullable=False)
  3. create model table

    $ python
    >>> from hoge import Repositories
    >>> Repositories.metadata.create_all(Repositories.get_session_engine())
    >>> exit()

Example

  1. create entity

    >>> from hoge import Repositories
    >>> entity = Repositories(name="JohnnieRunner", author="teitei-tk", url="https://github.com/teitei-tk/JohnnieRunner")
    
    or
    
    >>> entity_data = {"name": "JohnnieRunner", "author": "teitei-tk", "url": "https://github.com/teitei-tk/JohnnieRunner"}
    >>> entity = Repositories.new(entity_data)
  2. create record

    >>> entity.save()
    True
    mysql> select * from repositories;
    +----+---------------+-----------+--------------------------------------------+
    | id | name          | author    | url                                        |
    +----+---------------+-----------+--------------------------------------------+
    |  1 | JohnnieRunner | teitei-tk | https://github.com/teitei-tk/JohnnieRunner |
    +----+---------------+-----------+--------------------------------------------+
    1 row in set (0.00 sec)
    mysql>
  3. read record

    >>> entity = Repositories.get(1)
    
    or
    
    >>> entity = Repositories.find(1)
    
    >>> entity.name
    u"JohnnieRunner"
    >>> entity.author
    u"teitei-tk"
    >>> entity.url
    u"https://github.com/teitei-tk/JohnnieRunner"
  4. update record

    >>> entity.name = u"update_test"
    >>> entity.save()
    True
    mysql> select * from repositories;
    +----+-------------+-----------+--------------------------------------------+
    | id | name        | author    | url                                        |
    +----+-------------+-----------+--------------------------------------------+
    |  1 | update_test | teitei-tk | https://github.com/teitei-tk/JohnnieRunner |
    +----+-------------+-----------+--------------------------------------------+
    mysql>
  5. delete record

    >>> entity.delete()
    True
    mysql> select * from repositories;
    Empty set (0.00 sec)

TODO

  • [ ] Add DB Data Types

  • [ ] Easy generate table index

  • [ ] Easy Table RelationShips

  • [ ] Database Migration

  • [ ] RDBMS Support other than MySQL

License

  • MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

JohnnieRunner-0.0.1.tar.gz (4.5 kB view details)

Uploaded Source

File details

Details for the file JohnnieRunner-0.0.1.tar.gz.

File metadata

  • Download URL: JohnnieRunner-0.0.1.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for JohnnieRunner-0.0.1.tar.gz
Algorithm Hash digest
SHA256 25372a69d656d4f76b1a25c04f624b86783123b800aad3a953302d498e466092
MD5 dffba24a4037fbbee100e45159a3c84b
BLAKE2b-256 12b2f6d9b60613095ab2bf1534a91c5962f08da1094171b86d6f39d335d28a8d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 file

Supported by

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