getting an empty tuple
Steven D'Aprano
steve at REMOVETHIScyber.com.au
Sun Jul 31 12:40:32 EDT 2005
On Sun, 31 Jul 2005 08:40:26 -0700, nephish wrote:
> Hey there,
> i have a simple database query that returns as a tuple the number of
> rows that the query selected.
> kinda like this
>
>>>> cursor.execute('select value from table where autoinc > 234')
>>>> x = cursor.fetchall()
>>>> print x
>
>>>> 21L
21L is not a tuple, it is a long integer.
> ok, means 21 rows met the criteria of the query. but if there are none
> that match,
> like i do a
>
>>>> print x
>>>> 0L
>
> how do i encorporate that into an equation ?
> i have tried all kinds of stuff
And did they work? If they didn't work, tell us the exact error message
you got.
> if x == 0L
If x is a long integer, then that will work. Of just "if x == 0:" will
work too.
> if x(0) == None
No. That means x is a function, and you are giving it an argument of 0,
and it returns None.
> if x == None
You said that your query returns a tuple, but then gave an example where
it returns a long int. None is not a tuple, nor a long int, so testing
either of those things against None will never be true.
Did you try any of these things in the interactive interpreter? Python is
a great language for experimenting, because you can try this yourself:
# run your setup code ...
# and then do some experimenting
cursor.execute('select value from table where autoinc > 99999999')
# or some value that will never happen
x = cursor.fetchall()
print x
What do you get?
> anyway, what shoud i do to test if the result is empty?
Long ints are never empty, but they can be zero:
if x == 0:
print "no rows were found"
elif x == 1:
print "1 row was found"
else:
print "%d rows were found" % x
Tuples can be empty:
if len(x) == 0:
print "no rows were found"
or if you prefer:
if x == ():
print "no rows were found"
But the cleanest, most Pythonic way is just to do a truth-test:
if x:
print "something was found"
else:
print "x is empty, false, blank, nothing..."
--
Steven.
More information about the Python-list
mailing list