Skip to content
Permalink
Browse files
fix: executemany rowcount only reflected the last execution (#660)
  • Loading branch information
jimfulton committed May 12, 2021
1 parent 615d139 commit aeadc8c2d614bb9f0883ec901fca48930f3aaf19
Showing with 5 additions and 1 deletion.
  1. +4 −0 google/cloud/bigquery/dbapi/cursor.py
  2. +1 −1 tests/unit/test_dbapi_cursor.py
@@ -218,6 +218,7 @@ def executemany(self, operation, seq_of_parameters):
Sequence of many sets of parameter values.
"""
if seq_of_parameters:
rowcount = 0
# There's no reason to format the line more than once, as
# the operation only barely depends on the parameters. So
# we just use the first set of parameters. If there are
@@ -230,6 +231,9 @@ def executemany(self, operation, seq_of_parameters):
self._execute(
formatted_operation, parameters, None, None, parameter_types
)
rowcount += self.rowcount

self.rowcount = rowcount

def _try_fetch(self, size=None):
"""Try to start fetching data, if not yet started.
@@ -612,7 +612,7 @@ def test_executemany_w_dml(self):
(("test",), ("anothertest",)),
)
self.assertIsNone(cursor.description)
self.assertEqual(cursor.rowcount, 12)
self.assertEqual(cursor.rowcount, 24) # 24 because 2 * 12 because cumulatve.

def test_executemany_empty(self):
from google.cloud.bigquery.dbapi import connect

0 comments on commit aeadc8c

Please sign in to comment.