docstr: Connection.commit() did reset cursors, which made sqlite3
  to return rows multiple times when fetched from cursors
  after commit. See issues 10513 and 23129 for details.
code: def test_commit_cursor_reset(self):
      """
      Connection.commit() did reset cursors, which made sqlite3
      to return rows multiple times when fetched from cursors
      after commit. See issues 10513 and 23129 for details.
      """
      con = self.con
      con.executescript(
          """
          create table t(c);
          create table t2(c);
          insert into t values(0);
          insert into t values(1);
          insert into t values(2);
          """
      )
  
      self.assertEqual(con.isolation_level, "")
  
      counter = 0
      for i, row in enumerate(con.execute("select c from t")):
          with self.subTest(i=i, row=row):
              con.execute("insert into t2(c) values (?)", (i,))
              con.commit()
              if counter == 0:
                  self.assertEqual(row[0], 0)
              elif counter == 1:
                  self.assertEqual(row[0], 1)
              elif counter == 2:
                  self.assertEqual(row[0], 2)
              counter += 1
      self.assertEqual(
          counter, 3, "should have returned exactly three rows"
      )
  
imports: import datetime
  import unittest
  import sqlite3
  import weakref
  import functools
  from test import support
  from unittest.mock import patch
  from .util import memory_database, cx_limit
  from .util import MemoryDatabaseMixin
label_desc: Use image node_id 27 for calling the RegressionTests obj's underlying member method code with example usage: obj.test_commit_cursor_reset() without return types