diff --git a/aiomysql/cursors.py b/aiomysql/cursors.py index 35d29d72..164fef95 100644 --- a/aiomysql/cursors.py +++ b/aiomysql/cursors.py @@ -598,7 +598,8 @@ class SSCursor(Cursor): async def close(self): conn = self._connection - if conn is None: + if conn is None or conn.closed: + self._connection = None return if self._result is not None and self._result is conn._result: diff --git a/tests/test_sscursor.py b/tests/test_sscursor.py index de9da609..36f2a389 100644 --- a/tests/test_sscursor.py +++ b/tests/test_sscursor.py @@ -65,6 +65,15 @@ async def test_ssursor(connection): await cursor.close() +@pytest.mark.run_loop +async def test_ssursor_conn_closed(connection): + conn = connection + cursor = await conn.cursor(SSCursor) + + conn.close() + await cursor.close() + + @pytest.mark.run_loop async def test_sscursor_fetchall(connection): conn = connection