No project description provided
Project description
# 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')])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for aiosqlalchemy_miniorm-0.2.13.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba7ea5c95b80dd3d09f566c40524ec85c04c50c0786462fd8d6a5658a579707a |
|
MD5 | 0cd340f58dd28cc1bd0d49b29d2b1226 |
|
BLAKE2b-256 | ed6d6124f41776fca48233fd35f6d55758a301fc9833dbb3b170258d83dfa5b9 |