{"id":15009525,"url":"https://github.com/python-tools/aioorm","last_synced_at":"2025-10-03T18:30:54.137Z","repository":{"id":57409066,"uuid":"94994904","full_name":"Python-Tools/aioorm","owner":"Python-Tools","description":"a fork of aiopeewee-0.3.5,support postgresql","archived":true,"fork":false,"pushed_at":"2018-09-17T16:06:45.000Z","size":1870,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-15T23:16:24.587Z","etag":null,"topics":["asyncio","mysql","orm","postgresql","python-3-5"],"latest_commit_sha":null,"homepage":"https://python-tools.github.io/aioorm/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Python-Tools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-21T11:00:00.000Z","updated_at":"2023-02-07T01:45:01.000Z","dependencies_parsed_at":"2022-09-26T17:11:07.873Z","dependency_job_id":null,"html_url":"https://github.com/Python-Tools/aioorm","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Python-Tools%2Faioorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Python-Tools%2Faioorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Python-Tools%2Faioorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Python-Tools%2Faioorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Python-Tools","download_url":"https://codeload.github.com/Python-Tools/aioorm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235173150,"owners_count":18947449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","mysql","orm","postgresql","python-3-5"],"created_at":"2024-09-24T19:26:07.507Z","updated_at":"2025-10-03T18:30:48.771Z","avatar_url":"https://github.com/Python-Tools.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aioorm\n\n+ version: 0.1.6\n+ status: production\n+ author: hsz\n+ email: hsz1273327@gmail.com\n\n## Description\n\nAsyncio interface for peewee modeled after torpeewee\n\n\nkeywords:python3.5+,asyncio,orm,mysql,postgresql\n\n## Feature\n\n+ support mysql and postgresql\n+ database factory using database URL\n+ use peewee's fields\n+ ManyToManyField support\n+ Shortcuts support\n+ csv dump /load support\n+ can use playhose.postgres_ext.JSONField\n\n## Install\n\n`python -m pip install aioorm`\n\n## Examples\n\nThere are some Examples to show the use case\n\n### Example: GRUD\n\n```python\n\nfrom aioorm import AioModel, AioMySQLDatabase\nfrom peewee import CharField, TextField, DateTimeField\nfrom peewee import ForeignKeyField, PrimaryKeyField\n\n\ndb = AioMySQLDatabase('test', host='127.0.0.1', port=3306,\n                        user='root', password='')\n\n\nclass User(AioModel):\n    username = CharField()\n\n    class Meta:\n        database = db\n\n\nclass Blog(AioModel):\n    user = ForeignKeyField(User)\n    title = CharField(max_length=25)\n    content = TextField(default='')\n    pub_date = DateTimeField(null=True)\n    pk = PrimaryKeyField()\n\n    class Meta:\n        database = db\n\n\n# create connection pool\nawait db.connect(loop)\n\n# count\nawait User.select().count()\n\n# async iteration on select query\nasync for user in User.select():\n    print(user)\n\n# fetch all records as a list from a query in one pass\nusers = await User.select()\n\n# insert\nuser = await User.create(username='kszucs')\n\n# modify\nuser.username = 'krisztian'\nawait user.save()\n\n# async iteration on blog set\n[b.title async for b in user.blog_set.order_by(Blog.title)]\n\n# close connection pool\nawait db.close()\n\n# see more in the tests\n```\n\n### Example: Many to many\n\nNote that `AioManyToManyField` must be used instead of `ManyToMany`.\n\n```python\n\nfrom aioorm import AioManyToManyField\n\n\nclass User(AioModel):\n    username = CharField(unique=True)\n\n    class Meta:\n        database = db\n\n\nclass Note(AioModel):\n    text = TextField()\n    users = AioManyToManyField(User)\n\n    class Meta:\n        database = db\n\n\nNoteUserThrough = Note.users.get_through_model()\n\n\nasync for user in note.users:\n    # do something with the users\n```\n\nCurrently the only limitation I'm aware of immidiate setting of instance relation must be replaced with a method call:\n\n```python\n# original, which is not supported\ncharlie.notes = [n2, n3]\n\n# use instead\nawait charlie.notes.set([n2, n3])\n```\n\n### Serializing\n\nConverting to dict requires the asyncified version of `model_to_dict`\n\n```python\nfrom aioorm import model_to_dict\n\nserialized = await model_to_dict(user)\n```\n\n### Dump to csv\n\ntables can be dump to a csv file.\n\n```python\nfrom aioorm.utils import aiodump_csv\nquery = User.select().order_by(User_csv.id)\nawait aiodump_csv(query,str(filepath))\n```\n\n\nDocumentation\n--------------------------------\n\n`Documentation on Readthedocs \u003chttps://github.com/Python-Tools/aioorm\u003e`_.\n\n\n\n## TODO\n\n+ async dataset support\n+ more test\n\n\n\n## Limitations\n\n+ untested transactions\n+ only support mysql and postgresql\n\n## Bug fix\n\n+ fixed `get` and `get_or_create` 's bug","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython-tools%2Faioorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpython-tools%2Faioorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpython-tools%2Faioorm/lists"}