Skip to main content

No project description provided

Project description

travis codecov

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": []
}

Project details


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)

Uploaded Source

Built Distributions

restful_model-0.1.0-py3.7.egg (10.9 kB view details)

Uploaded Source

restful_model-0.1.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

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

Hashes for restful_model-0.1.0.tar.gz
Algorithm Hash digest
SHA256 77502512e8988b6e904e5ade84d7e9ff0308b47175b15da566d1cefe5ecd2593
MD5 d713dca92c857695ddd889e4c0009726
BLAKE2b-256 859855e5895322d8c84226f6b17c445eaaba4871c06017a571f7d21496141438

See more details on using hashes here.

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

Hashes for restful_model-0.1.0-py3.7.egg
Algorithm Hash digest
SHA256 58b90621622091c01790bbc3641bcac9a815b412a102e5e07ab30112c4c61277
MD5 91571d92ea73638fac40ddd6186c70c2
BLAKE2b-256 edc9b40bd020429960954eb1d73dff042966122516d94d4c2ce469b0ba195c54

See more details on using hashes here.

File details

Details for the file restful_model-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for restful_model-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f9632e8be07688a9a414d6095cc8ece74ca8a06df489ba40ab853a86d7e86c9
MD5 09ba7d62720bae706fec5719a7bee7b4
BLAKE2b-256 a589e6fd1455671c85d785ef31577c8df48074513e8229e1d0284c303bc94325

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page