更新的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
属性。