# Asynchronous SQLAlchemy Object Relational Mapper.
This is an ORM for accessing SQLAlchemy using asyncio. Working on top of SQLAlchemy Core.
It presents a method of associating user-defined Python classes with database tables, and instances of those classes (objects) with rows in their corresponding tables.
## Usage
Initialization:
from sqlalchemy import MetaData, Integer, String, DateTime
from aiopg.sa import create_engine
from aiosqlalchemy_miniorm import RowModel, RowModelDeclarativeMeta, BaseModelManager
metadata = MetaData()
BaseModel = declarative_base(metadata=metadata, cls=RowModel, metaclass=RowModelDeclarativeMeta)
async def setup():
metadata.bind = await create_engine(**database_settings)
class MyEntityManager(BaseModelManager):
async def get_with_products(self):
return await self.get_items(where_list=[(MyEntity.c.num_products > 0)])
class MyEntity(BaseModel):
__tablename__ = 'my_entity'
__model_manager_class__ = MyEntityManager
id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
num_products = Column(Integer)
created_at = Column(DateTime(), server_default=text('now()'), nullable=False)
Query:
objects = await MyEntity.objects.get_instances(
where_list=[(MyEntity.c.name == 'foo')],
order_by=['name', '-num_products']
)
num_objects = await MyEntity.objects.count(
where_list=[(MyEntity.c.name == 'foo'), (MyEntity.c.num_products > 3)]
)
or (low-level):
objects = await MyEntity.objects \
.set_sql(MyEntity.table.select()) \
.where([(MyEntity.c.name == 'foo')]) \
.limit(10) \
.fetchall()
Management:
record = await MyEntity.objects.insert(
name='bar',
num_products=0,
)
await record.update(name='baz')
await record.delete()
Transactions:
async with MyEntity.objects.transaction() as my_entity_objects:
await my_entity_objects.insert(name='bar', num_products=0)
await my_entity_objects.delete([(MyEntity.c.name == 'foo')])
This is an ORM for accessing SQLAlchemy using asyncio. Working on top of SQLAlchemy Core.
It presents a method of associating user-defined Python classes with database tables, and instances of those classes (objects) with rows in their corresponding tables.
## Usage
Initialization:
from sqlalchemy import MetaData, Integer, String, DateTime
from aiopg.sa import create_engine
from aiosqlalchemy_miniorm import RowModel, RowModelDeclarativeMeta, BaseModelManager
metadata = MetaData()
BaseModel = declarative_base(metadata=metadata, cls=RowModel, metaclass=RowModelDeclarativeMeta)
async def setup():
metadata.bind = await create_engine(**database_settings)
class MyEntityManager(BaseModelManager):
async def get_with_products(self):
return await self.get_items(where_list=[(MyEntity.c.num_products > 0)])
class MyEntity(BaseModel):
__tablename__ = 'my_entity'
__model_manager_class__ = MyEntityManager
id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
num_products = Column(Integer)
created_at = Column(DateTime(), server_default=text('now()'), nullable=False)
Query:
objects = await MyEntity.objects.get_instances(
where_list=[(MyEntity.c.name == 'foo')],
order_by=['name', '-num_products']
)
num_objects = await MyEntity.objects.count(
where_list=[(MyEntity.c.name == 'foo'), (MyEntity.c.num_products > 3)]
)
or (low-level):
objects = await MyEntity.objects \
.set_sql(MyEntity.table.select()) \
.where([(MyEntity.c.name == 'foo')]) \
.limit(10) \
.fetchall()
Management:
record = await MyEntity.objects.insert(
name='bar',
num_products=0,
)
await record.update(name='baz')
await record.delete()
Transactions:
async with MyEntity.objects.transaction() as my_entity_objects:
await my_entity_objects.insert(name='bar', num_products=0)
await my_entity_objects.delete([(MyEntity.c.name == 'foo')])
Metadata
Release files for aiosqlalchemy-miniorm 0.2.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiosqlalchemy_miniorm-0.2.13.tar.gz | 4.7 kB | Details |
Release files / aiosqlalchemy_miniorm-0.2.13.tar.gz
| Download URL | aiosqlalchemy_miniorm-0.2.13.tar.gz |
|---|---|
| Size | 4.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba7ea5c95b80dd3d09f566c40524ec85c04c50c0786462fd8d6a5658a579707a
|
|
BLAKE2b-256 checksum How to use checksums |
ed6d6124f41776fca48233fd35f6d55758a301fc9833dbb3b170258d83dfa5b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |