cx_Oracle - what is the best way to iterate over a result set? *

Question

There are several ways to iterate over a result set, which way is the best?

Answer

There are three ways to iterate over a result set. The best way in terms of both readability and performance is usually to use the built-in cursor iterator.

curs.execute('select * from people')
for row in curs:
    print row

You can fetch all the rows into a list, but this can have some bad side effects if the result set is large.

  • You have to wait for the entire result set to be returned to your client process.

  • You may eat up a lot of memory in your client to hold the built-up list.

  • It may take a while for Python to construct and deconstruct the list which you are going to immediately discard anyways.

for row in curs.fetchall():
    print row

Finally, you can loop over the result set fetching one row at a time. In general, there's no particular advantage in doing this over using the iterator. If there is something in your programming logic that seems to indicate there is an advantage in doing this, perhaps you should reconsider your programming logic.

row = curs.fetchone()
while row:
    print row
    row = curs.fetchone()
< br > via < a class="StackLink" href=" http://stackoverflow.com/questions/594/" >cx_Oracle - what is the best way to iterate over a result set?< /a>
Share on Google Plus

About Cinema Guy

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment