Metadata-Version: 2.1
Name: tornado-sqlalchemy
Version: 0.5.0
Summary: SQLAlchemy helpers for working in Tornado
Home-page: https://github.com/siddhantgoel/tornado-sqlalchemy
Author: Siddhant Goel
Author-email: me@sgoel.org
License: MIT
Keywords: tornado,sqlalchemy
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Database
Requires-Python: >=3.5.0
Requires-Dist: tornado (>=4.0)
Requires-Dist: SQLAlchemy (>=1.0)

tornado-sqlalchemy
==================

.. image:: https://badge.fury.io/py/tornado-sqlalchemy.svg
    :target: https://pypi.python.org/pypi/tornado-sqlalchemy

.. image:: https://travis-ci.org/siddhantgoel/tornado-sqlalchemy.svg?branch=stable
    :target: https://travis-ci.org/siddhantgoel/tornado-sqlalchemy

.. image:: https://readthedocs.org/projects/tornado-sqlalchemy/badge/?version=latest
    :target: https://tornado-sqlalchemy.readthedocs.io/en/latest/


Python helpers for using SQLAlchemy_ with Tornado_.

Installation
------------

.. code-block:: bash

    $ pip install tornado-sqlalchemy

Usage
-----

.. code-block:: python

    from tornado.gen import coroutine
    from tornado.web import Application, RequestHandler
    from tornado_sqlalchemy import as_future, make_session_factory, SessionMixin

    class NativeCoroutinesRequestHandler(SessionMixin, RequestHandler):
        async def get(self):
            with self.make_session() as session:
                count = await as_future(session.query(UserModel).count)

            self.write('{} users so far!'.format(count))

    class GenCoroutinesRequestHandler(SessionMixin, RequestHandler):
        @coroutine
        def get(self):
            with self.make_session() as session:
                count = yield as_future(session.query(UserModel).count)

            self.write('{} users so far!'.format(count))

    class SynchronousRequestHandler(SessionMixin, RequestHandler):
        def get(self):
            with self.make_session() as session:
                count = session.query(UserModel).count()

            self.write('{} users so far!'.format(count))

    handlers = (
       (r'/native-coroutines', NativeCoroutinesRequestHandler),
       (r'/gen-coroutines', GenCoroutinesRequestHandler),
       (r'/sync', SynchronousRequestHandler),
    )

    app = Application(
       handlers,
       session_factory=make_session_factory('postgres://user:password@host/database')
    )

Documentation
-------------

Documentation is available at `Read The Docs`_.


Development
-----------

To work on this package, please make sure you have Python 3.5+ and pipenv_
installed.

1. Git clone the repository -
   :code:`git clone https://github.com/siddhantgoel/tornado-sqlalchemy`

2. Install the packages required for development -
   :code:`pipenv install --dev`

3. That's basically it. You should now be able to run the test suite -
   :code:`py.test tests/`.

.. _pipenv: https://docs.pipenv.org/install/#installing-pipenv
.. _Read The Docs: https://tornado-sqlalchemy.readthedocs.io
.. _SQLAlchemy: http://www.sqlalchemy.org/
.. _tornado: http://tornadoweb.org


