Metadata-Version: 2.4
Name: sadisplay
Version: 0.4.9
Summary: SqlAlchemy schema display script
Home-page: http://bitbucket.org/estin/sadisplay
Author: Evgeniy Tatarkin
Author-email: tatarkin.evg@gmail.com
License: BSD
Platform: any
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
License-File: LICENSE
Requires-Dist: SQLAlchemy>=0.5
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: requires-dist
Dynamic: summary

=========
sadisplay
=========

About
=====
Simple package for describing SQLAlchemy schema and display raw database
tables. Relation detecting by `ForeignKey` columns.
Supports mapped class inherit. BSD licensed.


Output formats:

* `PlantUML <http://plantuml.sourceforge.net/>`_ class diagram
* `DOT <http://www.graphviz.org/>`_ graphviz directed graphs


Requirements
============
* python >= 2.5
* SQLAlchemy >= 0.5


Install
=======

::

    pip install sadisplay

From bitbucket::

    pip install http://bitbucket.org/estin/sadisplay/get/tip.tar.gz
    # or
    easy_install http://bitbucket.org/estin/sadisplay/get/tip.tar.gz


Usage
=====

Write simple script in your project environment::

    import codecs
    import sadisplay
    from yourapp import model

    desc = sadisplay.describe(
        [getattr(model, attr) for attr in dir(model)],
        show_methods=True,
        show_properties=True,
        show_indexes=True,
    )
    with codecs.open('schema.plantuml', 'w', encoding='utf-8') as f:
        f.write(sadisplay.plantuml(desc))
    with codecs.open('schema.dot', 'w', encoding='utf-8') as f:
        f.write(sadisplay.dot(desc))

    # Or only part of schema
    desc = sadisplay.describe([model.User, model.Group, model.Persmission])
    with codecs.open('auth.plantuml', 'w', encoding='utf-8') as f:
        f.write(sadisplay.plantuml(desc))
    with codecs.open('auth.dot', 'w', encoding='utf-8') as f:
        f..write(sadisplay.dot(desc))


Render PlantUML class diagram::

    $ java -jar plantuml.jar schema.plantuml

    # or for svg format
    $ java -jar plantuml.jar -Tsvg schema.plantuml


Render graph by graphviz::

    $ dot -Tpng schema.dot > schema.png


Also you can display you sql database tables by reflecting feature::

    $ sadisplay -u <URL connection string to db> -r dot > schema.dot
    $ dot -Tpng schema.dot > schema.png
