[Tutor] numrows returning -1

Alan Gauld alan.gauld at btinternet.com
Sat Nov 23 03:33:58 CET 2013


On 22/11/13 22:08, Paul Steele wrote:

> I am getting a numrows count of -1 when I print numrows (see line 23 of
> the code).   What does "-1" mean?    I think my connection is working
> and my table has data.

I don't know about MySQL but the sqlite3 module documentation says:

-------
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 may help but you should check the docs for the mysql module for 
details of that implementation.

Also I notice something odd in your code:

   cur.execute("select Name from Rosters")
   numrows = cur.rowcount
   print numrows
   for x in xrange(0,numrows):
       row = cursor.fetchone()  #AG - You never use row?
       print "Name"             #AG - just prints the literal string


You do realize that this will not print the names retrieved? It will 
print the literal string "Name" once for each row found. I suspect 
that's not what you want?

Check the examples on the sqlite3 module page for examples
(in sqlite) of how to do what (I think) you want.



-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos



More information about the Tutor mailing list