diff --git a/.travis.yml b/.travis.yml index d5c48828..01650c7d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,10 @@ +dist: xenial language: python python: - 3.5.3 - 3.6 + - 3.7 env: matrix: @@ -11,22 +13,27 @@ env: services: - docker + - mysql matrix: include: - python: 3.6 + dist: trusty env: PYTHONASYNCIODEBUG= addons: mariadb: 5.5 - python: 3.6 + dist: trusty env: PYTHONASYNCIODEBUG=1 addons: mariadb: 10.0 - python: 3.6 + dist: trusty env: PYTHONASYNCIODEBUG= addons: mariadb: 10.1 - python: 3.6 + dist: trusty env: PYTHONASYNCIODEBUG= addons: mysql: 5.7 diff --git a/aiomysql/utils.py b/aiomysql/utils.py index 9b74b9df..dfedc86f 100644 --- a/aiomysql/utils.py +++ b/aiomysql/utils.py @@ -70,9 +70,19 @@ async def __aexit__(self, exc_type, exc, tb): class _SAConnectionContextManager(_ContextManager): - async def __aiter__(self): - result = await self._coro - return result + def __aiter__(self): + return self + + async def __anext__(self): + if self._obj is None: + self._obj = await self._coro + + try: + return (await self._obj.__anext__()) + except StopAsyncIteration: + await self._obj.close() + self._obj = None + raise class _TransactionContextManager(_ContextManager):