Hi,

I'm pleased to release a new big version (0.6) of GINO - a lightweight ORM 
built on top of SQLAlchemy core and asyncpg for asyncio.

https://github.com/fantix/gino

* BSD license
* The motivation was to make life easier in a context where async DB access 
was essential
* [NEW] Async SQLAlchemy-alike engine and connection with async dialect API
* Async-friendly objective model for CRUD, a simplified ORM
* Support Sanic and Tornado
* Works with Alembic for migration management
* [NEW] Documentation <https://python-gino.readthedocs.io/> and 96% test 
coverage

Code example:

from gino import Gino

db = Gino()


class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer(), primary_key=True)
    nickname = db.Column(db.Unicode(), default='noname')


async def main():
    async with db.with_bind('asyncpg://localhost/gino'):

        # Create tables
        await db.gino.create_all()

        # Create object, `id` is assigned by database
        u1 = await User.create(nickname='fantix')
        print(u1.id, u1.nickname) # 1 fantix

        # Execute complex statement and return command status
        status, result = await User.update.values(
            nickname='No.' + db.cast(User.id, db.Unicode),
        ).where(
            User.id > 10,
        ).gino.status()
        print(status) # UPDATE 8

        # Iterate over the results of a large query in a transaction
        async with db.transaction():
            async for u in User.query.order_by(User.id).gino.iterate():
                print(u.id, u.nickname)


Suggestions and comments are greatly welcome!

BR,
Fantix

Reply via email to