Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zeromake/restful_model
SQLAlchemy Model to restful api
https://github.com/zeromake/restful_model
Last synced: about 1 month ago
JSON representation
SQLAlchemy Model to restful api
- Host: GitHub
- URL: https://github.com/zeromake/restful_model
- Owner: zeromake
- License: mit
- Created: 2018-07-05T12:15:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-09-05T11:27:37.000Z (over 6 years ago)
- Last Synced: 2024-07-08T18:59:41.696Z (6 months ago)
- Language: Python
- Size: 191 KB
- Stars: 7
- Watchers: 5
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE
Awesome Lists containing this project
README
restful_model
=============.. image:: https://www.travis-ci.org/zeromake/restful_model.svg?branch=master
:target: https://www.travis-ci.org/zeromake/restful_model
:alt: travis.. image:: https://codecov.io/gh/zeromake/restful_model/branch/master/graph/badge.svg
:target: https://codecov.io/gh/zeromake/restful_model
:alt: codecov.. image:: https://badge.fury.io/py/restful_model.svg
:target: https://pypi.org/project/restful_model/
:alt: Latest Version.. image:: https://img.shields.io/pypi/l/restful_model.svg
:target: https://github.com/zeromake/restful_model/blob/master/LICENSE
:alt: PyPI - License.. image:: https://img.shields.io/pypi/format/restful_model.svg
:target: https://pypi.org/project/restful_model/#files
:alt: PyPI - Format.. image:: https://img.shields.io/pypi/pyversions/restful_model.svg
:alt: PyPI - PyVersionsrestful_model is an `sqlalchemy`_ auto generate REATful API
Example
-------Sanic
^^^^^^app.py
.. code-block:: python
import sqlalchemy as sa
from sanic import Sanic
from sanic.constants import HTTP_METHODS
from restful_model import DataBase
from restful_model.extend.sanic import ApiViewmetadata = sa.MetaData()
User = sa.Table(
'user',
metadata,
sa.Column(
'id',
sa.Integer,
autoincrement=True,
primary_key=True,
nullable=False,
),
sa.Column(
'account',
sa.String(16),
nullable=False,
),
sqlite_autoincrement=True,
)
class UserView(ApiView):
__model__ = User
app = Sanic(__name__)
db = DataBase("sqlite:///db.db")
app.db = db@app.listener('before_server_start')
async def setup_db(app, loop):
if app.db.loop is None:
app.db.loop = loop
app.db.engine = await app.db.create_engine(echo=True)
if not await app.db.exists_table(User.name):
await app.db.create_table(User)userView = UserView.as_view(app.db)
app.add_route(userView, "/user", HTTP_METHODS)
app.add_route(userView, "/user/", HTTP_METHODS)if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)curl test
.. code-block:: bash
$ # create
$ curl -X POST http://127.0.0.1:8000/user \
-H 'content-type: application/json' \
-d '{ "account": "test1" }'
> {
"status": 201,
"message": "Insert ok!",
"meta": {"count":1}
}
$ # select
$ curl -X GET http://127.0.0.1:8000/user
> {
"status": 200,
"message": "Query ok!",
"data": [{
"id": 1,
"account": "test1"
}]
}
$ # update
$ curl -X PUT http://127.0.0.1:8000/user \
-H 'content-type: application/json' \
-d '{"where": {"id": 1}, "values": {"account": "test2"}}'
> {
"status": 201,
"message": "Update ok!",
"meta":{
"count": 1
}
}
$ curl -X GET http://127.0.0.1:8000/user
> {
"status": 200,
"message": "Query ok!",
"data": [
{"id": 1,"account": "test2"}
]
}
$ # delete
$ curl -X DELETE http://127.0.0.1:8000/user \
-H 'content-type: application/json' \
-d '{"id": 1}'
> {
"status": 200,
"message": "Delete ok!",
"meta": {"count":1}
}
$ curl -X GET http://127.0.0.1:8000/user
> {
"status": 200,
"message": "Query ok!",
"data": []
}Links
-----.. _sqlalchemy: https://github.com/zzzeek/sqlalchemy