Metadata-Version: 2.1
Name: peewee-aio
Version: 0.14.7
Summary: Peewee support for async frameworks (Asyncio, Trio)
Home-page: https://github.com/klen/peewee-aio
Author: Kirill Klenov
Author-email: horneds@gmail.com
License: MIT
Project-URL: Documentation, https://github.com/klen/peewee-aio
Project-URL: Source code, https://github.com/klen/peewee-aio
Project-URL: Issue tracker, https://github.com/klen/peewee-aio/issues
Keywords: peewee,asyncio,trio,orm
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Framework :: AsyncIO
Classifier: Framework :: Trio
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: peewee (>=3.15.4)
Requires-Dist: aio-databases (>=0.13.2)
Provides-Extra: aiomysql
Requires-Dist: aio-databases[aiomysql] ; extra == 'aiomysql'
Provides-Extra: aiopg
Requires-Dist: aio-databases[aiopg] ; extra == 'aiopg'
Provides-Extra: aiosqlite
Requires-Dist: aio-databases[aiosqlite] ; extra == 'aiosqlite'
Provides-Extra: asyncpg
Requires-Dist: aio-databases[asyncpg] ; extra == 'asyncpg'
Provides-Extra: tests
Requires-Dist: aio-databases[aiomysql,aiopg,aiosqlite,asyncpg,trio_mysql,triopg] ; extra == 'tests'
Requires-Dist: pytest ; extra == 'tests'
Requires-Dist: pytest-aio[trio] (>=1.3.2) ; extra == 'tests'
Requires-Dist: pytest-mypy ; extra == 'tests'
Requires-Dist: trio-asyncio ; extra == 'tests'
Provides-Extra: trio_mysql
Requires-Dist: aio-databases[trio_mysql] ; extra == 'trio_mysql'
Provides-Extra: triopg
Requires-Dist: aio-databases[triopg] ; extra == 'triopg'

# Peewee-AIO

Async support for [Peewee ORM](https://github.com/coleifer/peewee)

[![Tests Status](https://github.com/klen/peewee-aio/workflows/tests/badge.svg)](https://github.com/klen/peewee-aio/actions)
[![PYPI Version](https://img.shields.io/pypi/v/peewee-aio)](https://pypi.org/project/peewee-aio/)
[![Python Versions](https://img.shields.io/pypi/pyversions/peewee-aio)](https://pypi.org/project/peewee-aio/)

## Features

* Make [Peewee ORM](https://github.com/coleifer/peewee) to work async
* Supports PostgresQL, MySQL, SQLite
* Supports [asyncio](https://docs.python.org/3/library/asyncio.html) and
  [trio](https://github.com/python-trio/trio)
* Drivers supported:
    - [aiosqlite](https://github.com/omnilib/aiosqlite)
    - [aiomysql](https://github.com/aio-libs/aiomysql)
    - [aiopg](https://github.com/aio-libs/aiopg)
    - [asyncpg](https://github.com/MagicStack/asyncpg)
    - [triopg](https://github.com/python-trio/triopg)
    - [trio_mysql](https://github.com/python-trio/trio-mysql)


## Requirements

* python >= 3.7

## Installation

**peewee-aio** should be installed using pip:

```shell
$ pip install peewee-aio
```

You can install optional database drivers with:

```shell
$ pip install peewee-aio[aiosqlite]
$ pip install peewee-aio[aiomysql]
$ pip install peewee-aio[aiopg]
$ pip install peewee-aio[asyncpg]
$ pip install peewee-aio[trio_mysql]
$ pip install peewee-aio[triopg]
```

### Quickstart

```python
    import peewee
    from peewee_aio import Manager

    manager = Manager('aiosqlite:///:memory:')

    class TestModel(manager.Model):
        text = peewee.CharField()

    async def handler():

        # Initialize the database's pool (optional)
        async with manager:

            # Acquire a connection
            async with manager.connection():

                # Create the table in database
                await TestModel.create_table()

                # Create a record
                test = await TestModel.create(text="I'm working!")
                assert test
                assert test.id

                # Iterate through records
                async for test in TestModel.select():
                    assert test
                    assert test.id

                # Change records
                test.text = "I'm changed"
                await test.save()

                # Update records
                await TestModel.update({'text': "I'm updated!"}).where(TestModel.id == test.id)

                # Delete records
                await TestModel.delete().where(TestModel.id == test.id)

                # Drop the table in database
                await TestModel.drop_table()

    # Run the handler with your async library
    import asyncio

    asyncio.run(handler())
```

## Usage

TODO

## Bug tracker

If you have any suggestions, bug reports or annoyances please report them to
the issue tracker at https://github.com/klen/peewee-aio/issues


## Contributing

Development of the project happens at: https://github.com/klen/peewee-aio


## License

Licensed under a [MIT License](http://opensource.org/licenses/MIT)


