No project description provided
Project description
restful_model is an sqlalchemy auto generate REATful API
Example
Sanic
app.py
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 ApiView
metadata = 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/<id:int>", HTTP_METHODS)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
curl test
$ # 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
restful_model-0.1.0.tar.gz
(11.3 kB
view details)
Built Distributions
restful_model-0.1.0-py3.7.egg
(10.9 kB
view details)
File details
Details for the file restful_model-0.1.0.tar.gz
.
File metadata
- Download URL: restful_model-0.1.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77502512e8988b6e904e5ade84d7e9ff0308b47175b15da566d1cefe5ecd2593 |
|
MD5 | d713dca92c857695ddd889e4c0009726 |
|
BLAKE2b-256 | 859855e5895322d8c84226f6b17c445eaaba4871c06017a571f7d21496141438 |
File details
Details for the file restful_model-0.1.0-py3.7.egg
.
File metadata
- Download URL: restful_model-0.1.0-py3.7.egg
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58b90621622091c01790bbc3641bcac9a815b412a102e5e07ab30112c4c61277 |
|
MD5 | 91571d92ea73638fac40ddd6186c70c2 |
|
BLAKE2b-256 | edc9b40bd020429960954eb1d73dff042966122516d94d4c2ce469b0ba195c54 |
File details
Details for the file restful_model-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: restful_model-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f9632e8be07688a9a414d6095cc8ece74ca8a06df489ba40ab853a86d7e86c9 |
|
MD5 | 09ba7d62720bae706fec5719a7bee7b4 |
|
BLAKE2b-256 | a589e6fd1455671c85d785ef31577c8df48074513e8229e1d0284c303bc94325 |