I am trying to get the rowcount
of a sqlite3
cursor
in my Python3k program, but I am puzzled, as the rowcount
is always -1
, despite what Python3 docs say (actually it is contradictory, it should be None
). Even after fetching all the rows, rowcount
stays at -1
. Is it a sqlite3
bug? I have already checked if there are rows in the table.
I can get around this checking if a fetchone()
returns something different than None
, but I thought this issue would be nice to discuss.
Thanks.
From the documentation:
As required by the Python DB API Spec, the rowcount attribute “is -1 in case no executeXX() has been performed on the cursor or the rowcount of the last operation is not determinable by the interface”.
This includes SELECT
statements because we cannot determine the number of rows a query produced until all rows were fetched.
That means all SELECT
statements won't have a rowcount
. The behaviour you're observing is documented.
EDIT: Documentation doesn't say anywhere that rowcount
will be updated after you do a fetchall()
so it is just wrong to assume that.
所有评论(0)