Inspired on flask-restless this is a sqlalchemy restless api wrapper for tornado.
Flask-Restless provides a ReSTful JSON API for sqlalchemy.
Due to the fact that I'm a tornado fan I adapted Lincoln de Sousa's and Jeffrey Finkelstein's great library for using with tornado.
In many details this implementation follows the documentation of Flask-Restless:
https://flask-restless.readthedocs.org/en/latest/index.html
However there are some restrictions that are currently not implemented (like processors) or are slightly differ.
A autogenerated (using sphinx) version of the documentation for tornado-restless can be found at http://tornado-utils.github.io/tornado-restless/
flask-restless was dual licensed under the GNU Affero General Public License and 3-clause BSD License.
tornado-restless is dual licences under the GNU Affero General Public License or the 3-clause BSD License. For more information see the [LICENSE.AGPL.txt] or [LICENSE.BSD.txt].
tornado-restless was developed under python3.3, sqlalchemy0.9 and tornado3.1
To install this library as an egg use:
python setup.py install
import tornado.ioloop
import tornado.web
from tornado_restless import ApiManager
from sqlalchemy import create_engine, schema, Column
from sqlalchemy.types import Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# Init Tornado Application
application = tornado.web.Application([])
# Init SQLAlchemy
engine = create_engine('sqlite:///:memory:')
metadata = schema.MetaData()
Session = sessionmaker(bind=engine)
Base = declarative_base(metadata=metadata)
session = Session()
# Create some model
class Person(Base):
__tablename__ = 'persons'
id = Column(Integer, primary_key=True)
name = Column(String, unique=True)
metadata.create_all(engine)
# Create restless api handlers
api = ApiManager(application=application, session_maker=Session)
api.create_api(Person)
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()