Code Monkey home page Code Monkey logo

aiopg-trollius's Introduction

aiopg-trollius ======= .. image:: https://travis-ci.org/aio-libs/aiopg.svg?branch=master :target: https://travis-ci.org/aio-libs/aiopg .. image:: https://coveralls.io/repos/aio-libs/aiopg/badge.svg :target: https://coveralls.io/r/aio-libs/aiopg

aiopg is a library for accessing a PostgreSQL database from the asyncio (PEP-3156/tulip) framework. It wraps asynchronous features of the Psycopg database driver. This project, aiopg-trollius is a port to use trollius (basically an asyncio-like library for python 2.x +).

Example

from trollius import From, Return
import trollius as asyncio
from aiopg_trollius.pool import create_pool
from contextlib import closing, contextmanager

dsn = 'dbname=jetty user=nick password=1234 host=localhost port=5432'


@asyncio.coroutine
def yield_conn_context(pool):
    """
    Helper to manage the connection context.
    """
    conn = yield From(pool.acquire())

    @contextmanager
    def context():

        try:
            yield conn
        finally:
            pool.release(conn)
    raise Return( context() )


@asyncio.coroutine
def yield_cur_context(conn):
    """
    Helper to manage the cursor context.
    """
    cur = yield From(conn.cursor())

    raise Return( closing(cur) )



@asyncio.coroutine
def test_select():
    pool = yield From(create_pool(dsn))

    with (yield From(yield_conn_context(pool)) as conn:
        with (yield From(yield_cur_context(conn))) as cur:
            cur = yield From(conn.cursor())
            yield From(cur.execute('SELECT 1'))
            ret = yield From(cur.fetchone())
            assert ret == (1,), ret


asyncio.get_event_loop().run_until_complete(test_select())

Example of SQLAlchemy optional integration

Note: SQLAlchemy integration is NOT ported

import asyncio
from aiopg.sa import create_engine
import sqlalchemy as sa


metadata = sa.MetaData()

tbl = sa.Table('tbl', metadata,
    sa.Column('id', sa.Integer, primary_key=True),
    sa.Column('val', sa.String(255)))


@asyncio.coroutine
def go():
    engine = yield from create_engine(user='aiopg',
                                      database='aiopg',
                                      host='127.0.0.1',
                                      password='passwd')

    with (yield from engine) as conn:
        yield from conn.execute(tbl.insert().values(val='abc'))

        res = yield from conn.execute(tbl.select())
        for row in res:
            print(row.id, row.val)


asyncio.get_event_loop().run_until_complete(go())

Note: Tests were not ported

Please use:

$ python3 runtests.py

for executing project's unittests

aiopg-trollius's People

Contributors

asvetlov avatar encukou avatar jettify avatar lowks avatar popravich avatar realazthat avatar spumer avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.