Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lixxu/sanic-motor
simple motor wrapper for sanic
https://github.com/lixxu/sanic-motor
motor pymongo sanic
Last synced: 3 months ago
JSON representation
simple motor wrapper for sanic
- Host: GitHub
- URL: https://github.com/lixxu/sanic-motor
- Owner: lixxu
- Created: 2017-02-16T14:24:06.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-22T12:12:31.000Z (almost 2 years ago)
- Last Synced: 2024-06-23T07:39:47.172Z (5 months ago)
- Topics: motor, pymongo, sanic
- Language: Python
- Size: 43.9 KB
- Stars: 58
- Watchers: 7
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-sanic - Sanic-Motor
README
# sanic-motor
Simple motor wrapper for Sanic.```
Notice:
version 0.5 requires Sanic >= 21.3Works on Sanic >= 0.4.0 and MOTOR_URI need to be defined in app.config
```## Installation
`pip install sanic-motor`
## Usage
```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-from sanic import Sanic
from sanic.response import json
from sanic_jinja2 import SanicJinja2from sanic_motor import BaseModel
app = Sanic(__name__)
settings = dict(
MOTOR_URI='mongodb://localhost:27017/myapp', LOGO=None
)
app.config.update(settings)BaseModel.init_app(app)
jinja = SanicJinja2(app, autoescape=True)class User(BaseModel):
__coll__ = 'users'
__unique_fields__ = ['name']
# __unique_fields__ = ['name, age'] # name and age for unique@app.route('/')
async def index(request):
cur = await User.find(sort='name')
return jinja.render('index.html', request, users=cur.objects)@app.route("/show/")
async def show(request, id):
# add as_raw = True to get the dict format record
user_dict = await User.find_one(id, as_raw=True)# user = await User.find_one(id)
return json(dict(user=user_dict))if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)```
see examples and source code for details.Run example:
$cd example
$virtualenv venv
$. venv/bin/activate
$pip install -r requirements.txt
$python myapp.pyOpen to see the example page.
![example](/example/example.png "example")