Rance Hall wrote:

Generally you have something like this:

clientlist = get_clients()  # where get_clients is a prepared sql statement.

normally you would get the individual rows like this:

for row in clientlist:
   do stuff


which is great for a long list of results.  But I'm running into
issues when there are only 0 or 1 results in the set.

If clientlist is empty, you don't need to explicitly test for it:

>>> clientlist = []  # nothing there
>>> for row in clientlist:
...     print("Hello world")
...
>>>

Notice that nothing gets printed.

if there are zero rows then I can do something like:

if len(clientlist) == 0:
   do stuff


Generally one merely needs to check the list itself:

if clientlist:
    ...


although be warned that "lazy lists", or iterators, are slightly different -- but if len(clientlist) works, then this should also work.


I'm looking for a better way to access the row when there is just one
row in the result.

This should work:

row, = clientlist  # if one row only -- note the comma!
row1, row2 = clientlist  # if two rows
row1, row2, row3 = clientlist  # three rows

If the comma in the first example is too subtle, try this:

[row] = clientlist

Another way which should work:

row = clientlist[0]


Say from a user login attempt, or a request to edit an existing client record.

Is there a decent way to get direct access to the single row in the
result set without having to go through the for loop for just one
item?

It likely helps to know exactly what variable type clientlist would
be.  I have no idea.

type(clientlist) will tell you.




--
Steven
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to