semvec/pypi-packages huggingface dataset:
asyncom 0.3.3
Small and partial Obejct mapper on top of sqlalchemy for async
License: MIT license
Keywords: asyncom

# AsyncOM

Async OM it's a super basic Object mapper based almost all on sqlalchemy
ORM layer.

We use the declarative extension for building the classes, and also,
factor instances of them on querys. (*Limited support)

There is still no support for relations.

Depens on [encode/databases](https://github.com/encode/databases) dependency.


## Motivation

I don't like the asyncpgsa approach where they are just using,
the core layer, to build run the sqlgenerator. I like to build,
around the declarative layer of sqlachemy, and later found that
I can patch some of the methods on the session.query, to
use it's own sql generator, and turn async the query system.

Object persistent is minimal, and needs some love.


## Usage

```python

from sqlalchemy.ext.declarative import declarative_base
import sqlalchemy as sa
from databases import DatabaseURL

Base = declarative_base()


class OrmTest(Base):
    __tablename__ = 'orm_test'

    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.String(100), index=True)
    value = sa.Column(sa.Text)

# Instead of usign Database from databases, you can use:
db = OMDatabase(DatabaseURL('postgres://root@postgres:{port}/guillotina'))

# instances of the object can be created with:
test = OrmTest(name='xx', value='yy')
await db.add(test)

print(test.id)  # pk column is correct set

# get an instance
ins = await db.query(OrmTest).get(1)

total = await db.query(OrmTest).count()
assert total == 1

# remove it
await db.delete(ins)

# filter them
res = await db.query(OrmTest).filter(
    OrmTest.name.like('xx')).all()

# Or just iterate over the results with a cursor:
async for row in db.query(OrmTest).filter(OrmTest.name.like('xx')):
    print(f'Row {row.name}: {row.value}')


# There is basic support for table inheritance query OneToOne


# Look at tests
```




## Changelog

0.3.3
-----
- Fix collections import for Python 3.10

0.3.2
-----
- Support query multiple primary keys

0.3.1
-----

- Be able to provide mapper_factory to `OMQuery`
  [vangheem]

0.3.0
---
- Fix bug with om.delete an inherited objects

0.2.3
---
- Fix boolean expr on adding prods.
  Allowing to add values with 0

0.2.1
---
- Small fix when checking none on json fields arrays

0.1.9
----
- Added Column default and onupdate on update and add
  (only for scalar values and callables)
- Added small proxy prop on OMDatabaes, to raw asyncpg connection

0.1.8
---
- Yaml data importer

0.1.7
----
- Support adding basic inherited models

0.1.6
---
- query should be an async iterator

0.1.5
---
- Load inherited models.

0.1.4
----
- query(Object).get should return None if not found

0.1.3
----
- Fixes and improvements. Lay out basic API

0.1.0 (2019-04-07)
------------------

* First release on PyPI.