Peewee-AIO integration for Muffin framework
Project description
muffin-peewee-aio — Asynchronous Peewee ORM integration for the Muffin framework.
Requirements
Python >= 3.10
Installation
Install via pip:
$ pip install muffin-peewee-aio
You can include an async database driver as needed:
$ pip install muffin-peewee-aio[aiosqlite] $ pip install muffin-peewee-aio[aiopg] $ pip install muffin-peewee-aio[asyncpg] $ pip install muffin-peewee-aio[aiomysql]
Usage
from muffin import Application
from muffin_peewee import Plugin as Peewee
# Create the application
app = Application("example")
# Initialize the plugin
db = Peewee()
db.setup(app, PEEWEE_CONNECTION="postgresql://postgres:postgres@localhost:5432/database")
# Or: db = Peewee(app, **options)
Configuration
You can provide options either at initialization or through the application config.
Name |
Default |
Description |
|---|---|---|
CONNECTION |
sqlite:///db.sqlite |
Database connection URL |
CONNECTION_PARAMS |
{} |
Extra options passed to the database backend |
AUTO_CONNECTION |
True |
Automatically acquire a DB connection per request |
AUTO_TRANSACTION |
True |
Automatically wrap each request in a transaction |
MIGRATIONS_ENABLED |
True |
Enable the migration engine |
MIGRATIONS_PATH |
"migrations" |
Path to store migration files |
PYTEST_SETUP_DB |
True |
Manage DB setup and teardown in pytest |
You can also define options in the Application config using the PEEWEE_ prefix:
PEEWEE_CONNECTION = "postgresql://..."
Note: Muffin application config is case-insensitive.
Models and Queries
Define your model:
class Test(db.Model):
data = peewee.CharField()
Query the database:
@app.route("/")
async def view(request):
return [t.data async for t in Test.select()]
Connection Management
By default, connections and transactions are managed automatically. To manage them manually, disable the config flags and use context managers:
@app.route("/")
async def view(request):
async with db.connection():
async with db.transaction():
# Perform DB operations here
...
Migrations
Create a migration:
$ muffin example:app peewee-create [NAME] [--auto]
Run migrations:
$ muffin example:app peewee-migrate [NAME] [--fake]
Rollback the latest migration:
$ muffin example:app peewee-rollback
List all migrations:
$ muffin example:app peewee-list
Clear migration history from the database:
$ muffin example:app peewee-clear
Merge all migrations into one:
$ muffin example:app peewee-merge
Testing Support
You can use the conftest() context manager to auto-manage schema setup and teardown during testing:
import pytest
@pytest.mark.asyncio
async def test_example():
async with db.conftest():
# Tables are created and dropped automatically
...
Bug Tracker
Found a bug or have a suggestion? Please open an issue at: https://github.com/klen/muffin-peewee-aio/issues
Contributing
Development takes place at: https://github.com/klen/muffin-peewee-aio Pull requests are welcome!
Contributors
klen (Kirill Klenov)
License
This project is licensed under the 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file muffin_peewee_aio-2.4.4.tar.gz.
File metadata
- Download URL: muffin_peewee_aio-2.4.4.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12e1f0ef14079ad2cdc29d4a52f7059e9f841d86cb90d78dba875da6e59c5a57
|
|
| MD5 |
f62ba5dd88927b1953a0879b53c71dd6
|
|
| BLAKE2b-256 |
2e9d1f1bf9e04d84a28cfab52b75330e2f9adc4974e8c6d34f1731faa6d59f6f
|
File details
Details for the file muffin_peewee_aio-2.4.4-py3-none-any.whl.
File metadata
- Download URL: muffin_peewee_aio-2.4.4-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73ae04547998fcb536f78f92e9c7551e52ed4b94940dc0a289a891f1b33297ef
|
|
| MD5 |
3101b3b36e1adeb3df93f951e0cddb0c
|
|
| BLAKE2b-256 |
eb36131b170f62bb7fb5b85d79bff816ef06e6f7827d365fadef3bbeeb0d2949
|