New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

aioorm

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aioorm

a simple orm suport asyncio,fork of aiopeewee

  • 0.1.6
  • PyPI
  • Socket score

Maintainers
1

aioorm

  • 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

.. code:: python

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.

.. code:: python

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:

.. code:: python

# 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

.. code:: python

from aioorm import model_to_dict

serialized = await model_to_dict(user)

Dump to csv

tables can be dump to a csv file.

.. code:: python

from aioorm.utils import aiodump_csv
query = User.select().order_by(User_csv.id)
await aiodump_csv(query,str(filepath))

Documentation

Documentation on Readthedocs <https://github.com/Python-Tools/aioorm>_.

TODO

  • async dataset support
  • more test

Limitations

  • untested transactions
  • only support mysql and postgresql

Bug fix

  • fixed get and get_or_create 's bug

.. _peewee: http://docs.peewee-orm.com/en/latest/ .. _torpeewee: https://github.com/snower/torpeewee .. _aiopeewee: https://github.com/kszucs/aiopeewee

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc