diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index b85fd89..a980240 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,12 +9,12 @@ on: jobs: tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: fail-fast: false matrix: # last supported for sqlitecloud, last security maintained, last release - python-version: ["3.6", "3.8", "3.12"] + python-version: ["3.9", "3.10", "3.12"] steps: - uses: actions/checkout@v4 diff --git a/src/sqlitecloud/dbapi2.py b/src/sqlitecloud/dbapi2.py index 46c527e..87ad6bc 100644 --- a/src/sqlitecloud/dbapi2.py +++ b/src/sqlitecloud/dbapi2.py @@ -584,8 +584,7 @@ def execute( sql, parameters, self.connection.sqlitecloud_connection ) - self._resultset = None - self._result_operation = None + self._reset() if isinstance(result, SQLiteCloudResult): self._resultset = result @@ -853,6 +852,12 @@ def _get_value(self, row: int, col: int) -> Optional[Any]: return self._convert_value(value, colname, decltype) + def _reset(self) -> None: + self._resultset = None + self._result_operation = None + + self._iter_row = 0 + def __iter__(self) -> "Cursor": return self diff --git a/src/tests/integration/test_dbapi2.py b/src/tests/integration/test_dbapi2.py index fa1e793..786a8c6 100644 --- a/src/tests/integration/test_dbapi2.py +++ b/src/tests/integration/test_dbapi2.py @@ -441,3 +441,18 @@ def test_connection_is_connected(self, sqlitecloud_dbapi2_connection): connection.close() assert not connection.is_connected() + + def test_fetchall_returns_right_nrows_number(self, sqlitecloud_dbapi2_connection): + connection = sqlitecloud_dbapi2_connection + + cursor = connection.cursor() + + cursor.execute("SELECT * FROM Genres LIMIT 3") + + assert len(cursor.fetchall()) == 3 + assert cursor.rowcount == 3 + + cursor.execute("SELECT * FROM Albums LIMIT 4") + + assert len(cursor.fetchall()) == 4 + assert cursor.rowcount == 4