Skip to content

Commit 38ced2e

Browse files
committed
fix(cursors): reset iterator counter between queries execution
1 parent eb4e061 commit 38ced2e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/sqlitecloud/dbapi2.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,8 +584,7 @@ def execute(
584584
sql, parameters, self.connection.sqlitecloud_connection
585585
)
586586

587-
self._resultset = None
588-
self._result_operation = None
587+
self._reset()
589588

590589
if isinstance(result, SQLiteCloudResult):
591590
self._resultset = result
@@ -853,6 +852,12 @@ def _get_value(self, row: int, col: int) -> Optional[Any]:
853852

854853
return self._convert_value(value, colname, decltype)
855854

855+
def _reset(self) -> None:
856+
self._resultset = None
857+
self._result_operation = None
858+
859+
self._iter_row = 0
860+
856861
def __iter__(self) -> "Cursor":
857862
return self
858863

src/tests/integration/test_dbapi2.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,3 +441,18 @@ def test_connection_is_connected(self, sqlitecloud_dbapi2_connection):
441441
connection.close()
442442

443443
assert not connection.is_connected()
444+
445+
def test_fetchall_returns_right_nrows_number(self, sqlitecloud_dbapi2_connection):
446+
connection = sqlitecloud_dbapi2_connection
447+
448+
cursor = connection.cursor()
449+
450+
cursor.execute("SELECT * FROM Genres LIMIT 3")
451+
452+
assert len(cursor.fetchall()) == 3
453+
assert cursor.rowcount == 3
454+
455+
cursor.execute("SELECT * FROM Albums LIMIT 4")
456+
457+
assert len(cursor.fetchall()) == 4
458+
assert cursor.rowcount == 4

0 commit comments

Comments
 (0)