Async support for a range of databases
Project description
Muffin-Databases – Async support for a range of databases for Muffin Framework
Requirements
python >= 3.7
Installation
Muffin-Databases should be installed using pip:
$ pip install muffin-databases
Optionally you can install the required database drivers with:
$ pip install muffin-databases[sqlite] $ pip install muffin-databases[postgres] $ pip install muffin-databases[mysql]
Driver support is provided using one of asyncpg, aiomysql, or aiosqlite.
Usage
Setup the plugin and connect it into your app:
from muffin import Application
from muffin_databases import Plugin as DB
# Create Muffin Application
app = Application('example')
# Initialize the plugin
# As alternative: db = DB(app, **options)
db = DB(url='sqlite:///db.sqlite')
db.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 database."""
rows = await db.fetch_all('SELECT * from items')
return [dict(row.items()) for row in rows]
@app.route('/items', methods=['POST'])
async def insert_item(request):
"""Store an item into database."""
data = await request.data() # parse formdata/json from the request
await db.execute_many('INSERT INTO items (name, value) VALUES (:name, :value)', values=data)
return 'OK'
The Muffin-Databases plugin is based on databases. See the databases’s docs for further references.
Options
Name |
Default value |
Desctiption |
url |
"sqlite:///db.sqlite" |
A database connection URL |
params |
{} |
A database connection params |
You are able to provide the options when you are initiliazing the plugin:
db.setup(app, url='postgresql://localhost/example', params={'ssl': True, 'min_size': 5, 'max_size': 20})
Or setup it from Muffin.Application configuration using the DATABASES_ prefix:
DATABASES_URL = 'postgresql://localhost/example'
Muffin.Application configuration options are case insensitive
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-databases/issues
Contributing
Development of Muffin-Databases happens at: https://github.com/klen/muffin-databases
Contributors
klen (Kirill Klenov)
License
Licensed under a MIT license.
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
Built Distribution
File details
Details for the file muffin-databases-0.2.1.tar.gz
.
File metadata
- Download URL: muffin-databases-0.2.1.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff7695aa73801ed8edc9b0d21ae763c8da35cfea1f20477fcac09b0c08c904b9 |
|
MD5 | 6fda90d64e7921d9b090003828f71921 |
|
BLAKE2b-256 | 97165648c8b35a28eef2ac9375f9842848992ecd86793200b20e6b756485f3ac |
File details
Details for the file muffin_databases-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: muffin_databases-0.2.1-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10098978ea148f37669cd139945c3f57a412eee406b1d6ea99bb675145678473 |
|
MD5 | b6d28a4cbd5c34320352948a0cb8433f |
|
BLAKE2b-256 | 08158a04d08ae3ce021ae79717fbd740c5c77f39abed75934fa683651752f84c |