我创建了一个简单的4行表,并填充了数据。当我在解释器中检查表时,所有数据都存在且正确。当我在Python代码中运行fetchall()
时,我只得到2行。怎么了?
下面是表(portSettings):
portName portPrefix portOption portDeadband
-------- ---------- ---------- ------------
mInput1 min1_ 1 0.1
mInput2 min2_ 1 0.1
mInput3 min3_ 1 0.1
mInput4 min4_ 1 0.1
代码如下:
db = sqlite3.connect(dbLocation)
ptr = db.cursor()
query = 'SELECT * FROM portSettings;'
ptr.execute(query)
results = ptr.fetchall()
print(f'--------> {ptr.rowcount} results. voila! ↓ --------')
print(results)
结果是这样的
--------> -1 results. voila! ↓ --------
[('mInput3', 'min3_', 1, 0.1), ('mInput4', 'min4_', 1, 0.1)]
所以最重要的是剩下的数据呢第二,为什么ptr.rowcount()
是-1??
1条答案
按热度按时间lpwwtiir1#
您的示例只打印最后两行--在我的测试中,我得到了所有四行:
由于你只看到最后两行,我只能想到几种可能性:
1.如果您打开了
sqlite3
解释器,则可能存在未提交的事务1.根据
dbLocation
的值,您的python应用程序和sqlite3解释器可能打开了不同的.db
文件ptr.rowcount
行为已记录。要更改计数,可以使用len(results)
:修复这个
ptr.rowcount
可能会有帮助,也许这可以帮助你找到一些线索,为什么你只看到2行?