Muffin-Mongo -- MongoDB support for Muffin framework.
Contents
- python >= 3.9
Note
The plugin supports only asyncio evenloop (not trio)
Muffin-Mongo should be installed using pip:
pip install muffin-mongo
Setup the plugin and connect it into your app:
from muffin import Application
from muffin_mongo import Plugin as Mongo
# Create Muffin Application
app = Application('example')
# Initialize the plugin
# As alternative: db = DB(app, **options)
mongo = Mongo(db_url='mongodb://localhost:27017', database='db_name')
mongo.setup(app)
That's it now you are able to use the plugin inside your views:
@app.route('/items', methods=['GET'])
async def get_items(request):
"""Return a JSON with items from the database."""
documents = await mongo.items.find().sort('key').to_list(100)
return [dict(dd.items(), _id=str(dd['_id'])) for dd in documents]
@app.route('/items', methods=['POST'])
async def insert_item(request):
"""Store items from JSON into database. Return ids."""
data = await request.data() # parse formdata/json from the request
res = await mongo.items.insert_many(data)
return [str(key) for key in res.inserted_ids]
Name | Default value | Desctiption |
db_url | "mongodb://localhost:27017" |
A mongo connection URL |
database | None |
A database name (optional) |
You are able to provide the options when you are initiliazing the plugin:
mongo.setup(app, db_url='mongodb://localhost:27017')
Or setup it from Muffin.Application
configuration using the MONGO_
prefix:
MONGO_DB_URL = 'mongodb://localhost:27017'
Muffin.Application
configuration options are case insensitive
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-mongo/issues
Development of Muffin-Mongo happens at: https://github.com/klen/muffin-mongo
- klen (Kirill Klenov)
Licensed under a MIT license.