Skip to main content

async-orm

Async orm for async web framework, you should use Django to manage your database(ddl etc).

pip install -U async-orm

Usage

from django.db import models
from async_orm import BaseModel, transation, Q


class FooBar(BaseModel):
    """ foo bar """

    game = models.CharField(verbose_name='game', max_length=30, blank=False, null=False, db_index=True)
    title = models.CharField(verbose_name='title', max_length=100, blank=False, null=False)
    weight = models.IntegerField(verbose_name='weight', blank=False, null=False, default=0)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        app_label = 'test'
        verbose_name = "foo_bar"
        verbose_name_plural = "foo_bar"
        ordering = ['key', '-title']


async def test_foo_bar():
    game = 'game1'
    title = 'title2'
    # select
    await FooBar.select(where=Q(game=game, title=title) | Q(game='game2'), limit=2, offset=5)
    await FooBar.select(fields=['id', 'title'], order_by=['-title'])
    await FooBar.select(where=Q(weight__gt=0), limit=1)
    await FooBar.select(count=['game'], distinct=True, where=Q(id__gte=2))

    ret = await FooBar.select(where=Q(game='game2'), limit=1)
    if not ret:
        # insert
        ret = FooBar(game='game2', title='title22', weight=0)
        num = await ret.save()
        print(ret.id)
        print(num)
        # result = FooBar.create(game='game2', title='title22', weight=0)
    else:
        # update
        ret.title = 'new title' + str(datetime.datetime.now())
        num = await ret.save()
        print(ret.id)
        print(num)

        # delete
        # num = await ret.delete()
        # print(num)

    # transaction
    if ret is not None:
        async with transaction() as ts:
            await FooBar.create(game='game2', title='ttitle1', weight=0, ts=ts)
            await FooBar.create(game='game2', title='ttitle2', weight=0, ts=ts)
            await FooBar.create(game='game2', title='ttitle3', weight=0, ts=ts)
            await ts.conn.rollback()
            await FooBar.create(game='game2', title='ttitle4', weight=0, ts=ts)
            await ts.conn.commit()

Metadata

Release files for async-orm 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for async-orm 1.0.0
File Size Uploaded
async-orm-1.0.0.tar.gz 4.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for async-orm 1.0.0
File Interpreter ABI Platform
async_orm-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.1 kB

Release files / async-orm-1.0.0.tar.gz

Download URL async-orm-1.0.0.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
cc142155931d937f1d4e708619ecc3535fc3b81325b1435a4ae3d3b7fcd84763
BLAKE2b-256 checksum
How to use checksums
c7bb551b59d866563736aa94bc94fe507818cd71aad72ac3f606650bebb6f6b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

Release files / async_orm-1.0.0-py3-none-any.whl

Download URL async_orm-1.0.0-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bcd2fee4e1e26963979f7ad6e779d5546efe6c38371de1e4a72cd821dbb534e4
BLAKE2b-256 checksum
How to use checksums
409a34d2be0b7c6518e495a36d6bd0df8d873fef3748fee41df4dce06305f65d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.0

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page