Metadata-Version: 2.0
Name: aiopg
Version: 0.13.2
Summary: Postgres integration with asyncio.
Home-page: https://aiopg.readthedocs.io
Author: Andrew Svetlov
Author-email: andrew.svetlov@gmail.com
License: BSD
Download-URL: https://pypi.python.org/pypi/aiopg
Description-Content-Type: UNKNOWN
Platform: POSIX
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Environment :: Web Environment
Classifier: Development Status :: 4 - Beta
Classifier: Topic :: Database
Classifier: Topic :: Database :: Front-Ends
Classifier: Framework :: AsyncIO
Requires-Dist: psycopg2 (>=2.5.2)
Provides-Extra: sa
Requires-Dist: sqlalchemy (>=1.1); extra == 'sa'

aiopg
=====
.. image:: https://travis-ci.org/aio-libs/aiopg.svg?branch=master
   :target: https://travis-ci.org/aio-libs/aiopg
.. image:: https://codecov.io/gh/aio-libs/aiopg/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/aio-libs/aiopg
.. image:: https://badges.gitter.im/Join%20Chat.svg
    :target: https://gitter.im/aio-libs/Lobby
    :alt: Chat on Gitter

**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.

Example
-------

.. code:: python

    import asyncio
    import aiopg

    dsn = 'dbname=aiopg user=aiopg password=passwd host=127.0.0.1'

    async def go():
        pool = await aiopg.create_pool(dsn)
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 1")
                ret = []
                async for row in cur:
                    ret.append(row)
                assert ret == [(1,)]

    loop = asyncio.get_event_loop()
    loop.run_until_complete(go())


Example of SQLAlchemy optional integration
------------------------------------------

.. code:: python

   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)))

   async def create_table(engine):
       async with engine.acquire() as conn:
           await conn.execute('DROP TABLE IF EXISTS tbl')
           await conn.execute('''CREATE TABLE tbl (
                                     id serial PRIMARY KEY,
                                     val varchar(255))''')

   async def go():
       async with create_engine(user='aiopg',
                                database='aiopg',
                                host='127.0.0.1',
                                password='passwd') as engine:

           async with engine.acquire() as conn:
               await conn.execute(tbl.insert().values(val='abc'))

               async for row in conn.execute(tbl.select()):
                   print(row.id, row.val)

   loop = asyncio.get_event_loop()
   loop.run_until_complete(go())

For ``yield from`` based code, see the ``./examples`` folder, files with
``old_style`` part in their names.

.. _PostgreSQL: http://www.postgresql.org/
.. _asyncio: http://docs.python.org/3.4/library/asyncio.html

Please use::

   $ make test

for executing the project's unittests.  See CONTRIBUTING.rst for details
on how to set up your environment to run the tests.

CHANGES
-------

0.13.2 (2018-01-03)
^^^^^^^^^^^^^^^^^^^

* Fixed compatibility with SQLAlchemy 1.2.0 #412

* Added support for transaction isolation levels #219


0.13.1 (2017-09-10)
^^^^^^^^^^^^^^^^^^^

* Added connection poll recycling logic #373


0.13.0 (2016-12-02)
^^^^^^^^^^^^^^^^^^^

* Add `async with` support to `.begin_nested()` #208

* Fix connection.cancel() #212 #223

* Raise informative error on unexpected connection closing #191

* Added support for python types columns issues #217

* Added support for default values in SA table issues #206


0.12.0 (2016-10-09)
^^^^^^^^^^^^^^^^^^^

* Add an on_connect callback parameter to pool #141

* Fixed connection to work under both windows and posix based systems #142

0.11.0 (2016-09-12)
^^^^^^^^^^^^^^^^^^^

* Immediately remove callbacks from a closed file descriptor #139

* Drop Python 3.3 support

0.10.0 (2016-07-16)
^^^^^^^^^^^^^^^^^^^

* Refactor tests to use dockerized Postgres server #107

* Reduce default pool minsize to 1 #106

* Explicitly enumerate packages in setup.py #85

* Remove expired connections from pool on acquire #116

* Don't crash when Connection is GC'ed #124

* Use loop.create_future() if available

0.9.2 (2016-01-31)
^^^^^^^^^^^^^^^^^^

* Make pool.release return asyncio.Future, so we can wait on it in
  `__aexit__` #102

* Add support for uuid type #103

0.9.1 (2016-01-17)
^^^^^^^^^^^^^^^^^^

* Documentation update #101

0.9.0 (2016-01-14)
^^^^^^^^^^^^^^^^^^

* Add async context managers for transactions #91

* Support async iterator in ResultProxy #92

* Add async with for engine #90

0.8.0 (2015-12-31)
^^^^^^^^^^^^^^^^^^

* Add PostgreSQL notification support #58

* Support pools with unlimited size #59

* Cancel current DB operation on asyncio timeout #66

* Add async with support for Pool, Connection, Cursor #88

0.7.0 (2015-04-22)
^^^^^^^^^^^^^^^^^^

* Get rid of resource leak on connection failure.

* Report ResourceWarning on non-closed connections.

* Deprecate iteration protocol support in cursor and ResultProxy.

* Release sa connection to pool on `connection.close()`.

0.6.0 (2015-02-03)
^^^^^^^^^^^^^^^^^^

* Accept dict, list, tuple, named and positional parameters in
  `SAConnection.execute()`

0.5.2 (2014-12-08)
^^^^^^^^^^^^^^^^^^

* Minor release, fixes a bug that leaves connection in broken state
  after `cursor.execute()` failure.

0.5.1 (2014-10-31)
^^^^^^^^^^^^^^^^^^

* Fix a bug for processing transactions in line.

0.5.0 (2014-10-31)
^^^^^^^^^^^^^^^^^^

* Add .terminate() to Pool and Engine

* Reimplement connection pool (now pool size cannot be greater than pool.maxsize)

* Add .close() and .wait_closed() to Pool and Engine

* Add minsize, maxsize, size and freesize properties to sa.Engine

* Support *echo* parameter for logging executed SQL commands

* Connection.close() is not a coroutine (but we keep backward compatibility).

0.4.1 (2014-10-02)
^^^^^^^^^^^^^^^^^^

* make cursor iterable

* update docs

0.4.0 (2014-10-02)
^^^^^^^^^^^^^^^^^^

* add timeouts for database operations.

* Autoregister psycopg2 support for json data type.

* Support JSON in aiopg.sa

* Support ARRAY in aiopg.sa

* Autoregister hstore support if present in connected DB

* Support HSTORE in aiopg.sa

0.3.2 (2014-07-07)
^^^^^^^^^^^^^^^^^^

* change signature to cursor.execute(operation, parameters=None) to
  follow psycopg2 convention.

0.3.1 (2014-07-04)
^^^^^^^^^^^^^^^^^^

* Forward arguments to cursor constructor for pooled connections.

0.3.0 (2014-06-22)
^^^^^^^^^^^^^^^^^^

* Allow executing SQLAlchemy DDL statements.

* Fix bug with race conditions on acquiring/releasing connections from pool.

0.2.3 (2014-06-12)
^^^^^^^^^^^^^^^^^^

* Fix bug in connection pool.

0.2.2 (2014-06-07)
^^^^^^^^^^^^^^^^^^

* Fix bug with passing parameters into SAConnection.execute when
  executing raw SQL expression.

0.2.1 (2014-05-08)
^^^^^^^^^^^^^^^^^^

* Close connection with invalid transaction status on returning to pool.

0.2.0 (2014-05-04)
^^^^^^^^^^^^^^^^^^

* Implemented optional support for sqlalchemy functional sql layer.

0.1.0 (2014-04-06)
^^^^^^^^^^^^^^^^^^

* Implemented plain connections: connect, Connection, Cursor.

* Implemented database pools: create_pool and Pool.