{ "info": { "author": "zeromake", "author_email": "a390720046@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: AsyncIO", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "restful_model\n=============\n\n.. image:: https://www.travis-ci.org/zeromake/restful_model.svg?branch=master\n :target: https://www.travis-ci.org/zeromake/restful_model\n :alt: travis\n\n.. image:: https://codecov.io/gh/zeromake/restful_model/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/zeromake/restful_model\n :alt: codecov\n\n\nrestful_model is an `sqlalchemy`_ auto generate REATful API\n\nExample\n-------\n\nSanic\n^^^^^^\n\napp.py\n\n.. code-block:: python\n\n import sqlalchemy as sa\n from sanic import Sanic\n from sanic.constants import HTTP_METHODS\n from restful_model import DataBase\n from restful_model.extend.sanic import ApiView\n\n metadata = sa.MetaData()\n User = sa.Table(\n 'user',\n metadata,\n sa.Column(\n 'id',\n sa.Integer,\n autoincrement=True,\n primary_key=True,\n nullable=False,\n ),\n sa.Column(\n 'account',\n sa.String(16),\n nullable=False,\n ),\n sqlite_autoincrement=True,\n )\n class UserView(ApiView):\n __model__ = User\n \n app = Sanic(__name__)\n db = DataBase(\"sqlite:///db.db\")\n app.db = db\n\n @app.listener('before_server_start')\n async def setup_db(app, loop):\n if app.db.loop is None:\n app.db.loop = loop\n app.db.engine = await app.db.create_engine(echo=True)\n if not await app.db.exists_table(User.name):\n await app.db.create_table(User)\n\n userView = UserView.as_view(app.db)\n app.add_route(userView, \"/user\", HTTP_METHODS)\n app.add_route(userView, \"/user/\", HTTP_METHODS)\n\n if __name__ == \"__main__\":\n app.run(host=\"0.0.0.0\", port=8000)\n\ncurl test\n\n.. code-block:: bash\n\n $ # create\n $ curl -X POST http://127.0.0.1:8000/user \\\n -H 'content-type: application/json' \\\n -d '{ \"account\": \"test1\" }'\n > {\n \"status\": 201,\n \"message\": \"Insert ok!\",\n \"meta\": {\"count\":1}\n }\n $ # select\n $ curl -X GET http://127.0.0.1:8000/user\n > {\n \"status\": 200,\n \"message\": \"Query ok!\",\n \"data\": [{\n \"id\": 1,\n \"account\": \"test1\"\n }]\n }\n $ # update\n $ curl -X PUT http://127.0.0.1:8000/user \\\n -H 'content-type: application/json' \\\n -d '{\"where\": {\"id\": 1}, \"values\": {\"account\": \"test2\"}}'\n > {\n \"status\": 201,\n \"message\": \"Update ok!\",\n \"meta\":{\n \"count\": 1\n }\n }\n $ curl -X GET http://127.0.0.1:8000/user\n > {\n \"status\": 200,\n \"message\": \"Query ok!\",\n \"data\": [\n {\"id\": 1,\"account\": \"test2\"}\n ]\n }\n $ # delete\n $ curl -X DELETE http://127.0.0.1:8000/user \\\n -H 'content-type: application/json' \\\n -d '{\"id\": 1}'\n > {\n \"status\": 200,\n \"message\": \"Delete ok!\",\n \"meta\": {\"count\":1}\n }\n $ curl -X GET http://127.0.0.1:8000/user\n > {\n \"status\": 200,\n \"message\": \"Query ok!\",\n \"data\": []\n }\n\nLinks\n-----\n\n.. _sqlalchemy: https://github.com/zzzeek/sqlalchemy\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zeromake/restful_model", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "restful_model", "package_url": "https://pypi.org/project/restful_model/", "platform": "any", "project_url": "https://pypi.org/project/restful_model/", "project_urls": { "Homepage": "https://github.com/zeromake/restful_model" }, "release_url": "https://pypi.org/project/restful_model/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "", "version": "0.1.0" }, "last_serial": 4152029, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "91571d92ea73638fac40ddd6186c70c2", "sha256": "58b90621622091c01790bbc3641bcac9a815b412a102e5e07ab30112c4c61277" }, "downloads": -1, "filename": "restful_model-0.1.0-py3.7.egg", "has_sig": false, "md5_digest": "91571d92ea73638fac40ddd6186c70c2", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 10935, "upload_time": "2018-08-09T07:40:44", "url": "https://files.pythonhosted.org/packages/ed/c9/b40bd020429960954eb1d73dff042966122516d94d4c2ce469b0ba195c54/restful_model-0.1.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "09ba7d62720bae706fec5719a7bee7b4", "sha256": "5f9632e8be07688a9a414d6095cc8ece74ca8a06df489ba40ab853a86d7e86c9" }, "downloads": -1, "filename": "restful_model-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09ba7d62720bae706fec5719a7bee7b4", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 11237, "upload_time": "2018-08-09T07:38:53", "url": "https://files.pythonhosted.org/packages/a5/89/e6fd1455671c85d785ef31577c8df48074513e8229e1d0284c303bc94325/restful_model-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d713dca92c857695ddd889e4c0009726", "sha256": "77502512e8988b6e904e5ade84d7e9ff0308b47175b15da566d1cefe5ecd2593" }, "downloads": -1, "filename": "restful_model-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d713dca92c857695ddd889e4c0009726", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11325, "upload_time": "2018-08-09T07:40:58", "url": "https://files.pythonhosted.org/packages/85/98/55e5895322d8c84226f6b17c445eaaba4871c06017a571f7d21496141438/restful_model-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "91571d92ea73638fac40ddd6186c70c2", "sha256": "58b90621622091c01790bbc3641bcac9a815b412a102e5e07ab30112c4c61277" }, "downloads": -1, "filename": "restful_model-0.1.0-py3.7.egg", "has_sig": false, "md5_digest": "91571d92ea73638fac40ddd6186c70c2", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 10935, "upload_time": "2018-08-09T07:40:44", "url": "https://files.pythonhosted.org/packages/ed/c9/b40bd020429960954eb1d73dff042966122516d94d4c2ce469b0ba195c54/restful_model-0.1.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "09ba7d62720bae706fec5719a7bee7b4", "sha256": "5f9632e8be07688a9a414d6095cc8ece74ca8a06df489ba40ab853a86d7e86c9" }, "downloads": -1, "filename": "restful_model-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09ba7d62720bae706fec5719a7bee7b4", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 11237, "upload_time": "2018-08-09T07:38:53", "url": "https://files.pythonhosted.org/packages/a5/89/e6fd1455671c85d785ef31577c8df48074513e8229e1d0284c303bc94325/restful_model-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d713dca92c857695ddd889e4c0009726", "sha256": "77502512e8988b6e904e5ade84d7e9ff0308b47175b15da566d1cefe5ecd2593" }, "downloads": -1, "filename": "restful_model-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d713dca92c857695ddd889e4c0009726", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11325, "upload_time": "2018-08-09T07:40:58", "url": "https://files.pythonhosted.org/packages/85/98/55e5895322d8c84226f6b17c445eaaba4871c06017a571f7d21496141438/restful_model-0.1.0.tar.gz" } ] }