所以我已经阅读了文档,上面写着:
游标。行计数露 尽管sqlite3模块的Cursor类实现了此属性,但是数据库引擎自己对确定受影响的流''/选定的流’‘的支持是奇怪的。 这包括SELECT语句,因为在获取所有行之前,我们无法确定查询产生的行数。
游标。行计数露
尽管sqlite3模块的Cursor类实现了此属性,但是数据库引擎自己对确定受影响的流''/选定的流’‘的支持是奇怪的。
受影响的流''/
这包括SELECT语句,因为在获取所有行之前,我们无法确定查询产生的行数。
怎么了,在执行SELECT之后,我无法立即使用它来确定返回的行数。确定执行了查询后,现在已经获取了所有行吗?
最初处理查询时,SQLite不会“获取”所有行。每次执行准备好的查询时,它都会返回一行。
从此处的SQLite3常见问题解答
问)哪个函数可以获取行数?
A)没有函数来检索结果集中的行数。SQLite事先不知道数字,但是在遍历表时逐行返回。应用程序可以在每个成功的sqlite3_step()处根据需要增加行计数器。
一些包装器能够收集内存表中结果集中的所有行,因此它们可以返回行数。
您总是可以获取某些SELECT语句返回的行数,但会降低性能:
BEGIN IMMEDIATE TRANSACTION; SELECT COUNT(*) FROM x WHERE y; SELECT a,b,c FROM x WHERE y; ROLLBACK TRANSACTION;
您必须将其包装在事务中,以防止其他连接在两个SELECT语句之间插入/删除行。