更新的Python sqlite3行数取决于Python版本

更新的Python sqlite3行数取决于Python版本,python,sqlite,Python,Sqlite,我正在使用以下Python代码中的sqlite3包更新sqlite数据库中的一些行 sql = """ UPDATE measurements SET value=? WHERE value IS NULL AND counter IS NOT NULL; """ with self.conn: cur = self.conn.execute(sql, [val

我正在使用以下
Python
代码中的
sqlite3
包更新
sqlite
数据库中的一些行

sql = """
      UPDATE
          measurements
      SET
          value=?
      WHERE
          value IS NULL
          AND counter IS NOT NULL;
      """
with self.conn:
    cur = self.conn.execute(sql, [value])
cur.rowcount

它在docker容器中运行。基于它的图像,我得到了预期的行数。图像基于
python3.6
后,将立即执行更新,但
rowcount
始终为-1。有人有什么想法吗?

python版本是docker图像之间唯一的区别,还是实际的sqlite c库也可能不同?无论如何,对于引擎对受影响行的支持是“古怪”的这一点,它们非常具体:)Pythons c lib
\u sqlite3.cpython-…
的命名不同,但在这两种情况下,链接都指向
libsqlite3.so.0.8.6
。嗯,是的,也许我应该取消使用cursor.rowcount,因为它看起来不可靠。即使您的示例涉及DML语句,我还是忍不住想知道about DDL语句中的语句是否从python 3.6开始就不再自动提交了。检查连接的
隔离级别在两个版本中是否相同。检查连接的隔离级别:在两个版本中都是空字符串。将其显式设置为
None
不会影响光标的
rowcount
属性。