a simple orm suport asyncio,fork of aiopeewee
Project description
version: 0.1.6
status: production
author: hsz
email: hsz1273327@gmail.com
Asyncio interface for peewee modeled after torpeewee
Feature
support mysql and postgresql
database factory using database URL
use peewee’s fields
ManyToManyField support
Shortcuts support
csv dump /load support
can use playhose.postgres_ext.JSONField
Install
python -m pip install aioorm
Example: GRUD
from aioorm import AioModel, AioMySQLDatabase
from peewee import CharField, TextField, DateTimeField
from peewee import ForeignKeyField, PrimaryKeyField
db = AioMySQLDatabase('test', host='127.0.0.1', port=3306,
user='root', password='')
class User(AioModel):
username = CharField()
class Meta:
database = db
class Blog(AioModel):
user = ForeignKeyField(User)
title = CharField(max_length=25)
content = TextField(default='')
pub_date = DateTimeField(null=True)
pk = PrimaryKeyField()
class Meta:
database = db
# create connection pool
await db.connect(loop)
# count
await User.select().count()
# async iteration on select query
async for user in User.select():
print(user)
# fetch all records as a list from a query in one pass
users = await User.select()
# insert
user = await User.create(username='kszucs')
# modify
user.username = 'krisztian'
await user.save()
# async iteration on blog set
[b.title async for b in user.blog_set.order_by(Blog.title)]
# close connection pool
await db.close()
# see more in the tests
Example: Many to many
Note that AioManyToManyField must be used instead of ManyToMany.
from aioorm import AioManyToManyField
class User(AioModel):
username = CharField(unique=True)
class Meta:
database = db
class Note(AioModel):
text = TextField()
users = AioManyToManyField(User)
class Meta:
database = db
NoteUserThrough = Note.users.get_through_model()
async for user in note.users:
# do something with the users
Currently the only limitation I’m aware of immidiate setting of instance relation must be replaced with a method call:
# original, which is not supported
charlie.notes = [n2, n3]
# use instead
await charlie.notes.set([n2, n3])
Serializing
Converting to dict requires the asyncified version of model_to_dict
from aioorm import model_to_dict
serialized = await model_to_dict(user)
Dump to csv
tables can be dump to a csv file.
from aioorm.utils import aiodump_csv
query = User.select().order_by(User_csv.id)
await aiodump_csv(query,str(filepath))
Documentation
TODO
async dataset support
more test
Limitations
untested transactions
only support mysql and postgresql
Bug fix
fixed get and get_or_create ‘s bug
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 aioorm-0.1.6.tar.gz
.
File metadata
- Download URL: aioorm-0.1.6.tar.gz
- Upload date:
- Size: 31.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc6b105e422e5549b7591d78cd883baaeeb0532a0844433b73bce22511a76bf1 |
|
MD5 | 318fc59c38989ce4486a1bc5a4f02663 |
|
BLAKE2b-256 | 9f17ddfdc49f637bf79b76e4691109fc3443ebf5f7521892059ac0ac8de84f1b |
File details
Details for the file aioorm-0.1.6-py3-none-any.whl
.
File metadata
- Download URL: aioorm-0.1.6-py3-none-any.whl
- Upload date:
- Size: 27.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce93894caf6f63913f868a5b5a4b5f47c9ce5efc2c12d713851b2572da634522 |
|
MD5 | 223a14d47e50cce29940c63b0de15c30 |
|
BLAKE2b-256 | 1727cca3916a9af9c00fb37d03953368bd84dfa3bf3c7e02b8b4597c91479588 |