Re: Creating an iterator in a class

Discussion in 'Python' started by Ian Kelly, Dec 27, 2012.

  1. Ian Kelly

    Ian Kelly Guest

    On Thu, Dec 27, 2012 at 7:44 AM, Joseph L. Casale
    <> wrote:
    > I am writing a class to provide a db backed configuration for an application.
    >
    > In my programs code, I import the class and pass the ODBC params to the
    > class for its __init__ to instantiate a connection.
    >
    > I would like to create a function to generically access a table and provide an
    > iterator. How does one create a function in a class that takes an argument and
    > returns an iterator? I saw some examples where the class gets instantiated
    > with the table defined but I was hoping not to do this so I could continue to
    > access various tables through one connection/cursor.


    It's probably best if you use separate cursors anyway. Say you have
    two methods with a shared cursor:

    def iter_table_a(self):
    self.cursor.execute("SELECT * FROM TABLE_A")
    yield from self.cursor

    def iter_table_b(self):
    self.cursor.execute("SELECT * FROM TABLE_B")
    yield from self.cursor

    If the client code calls iter_table_a and partially iterates over the
    result, and then needs to use iter_table_b for some reason, then when
    it gets back to the table A results the data will be gone. You can
    only safely share cursors when you can guarantee that each query will
    be completely processed before the next query is run, and you can't
    guarantee that if you're just returning iterators.
    Ian Kelly, Dec 27, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Hendrik Maryns
    Replies:
    18
    Views:
    1,416
  2. greg
    Replies:
    6
    Views:
    454
    Dietmar Kuehl
    Jul 17, 2003
  3. Replies:
    6
    Views:
    640
    Jim Langston
    Oct 30, 2005
  4. Steven D'Aprano

    What makes an iterator an iterator?

    Steven D'Aprano, Apr 18, 2007, in forum: Python
    Replies:
    28
    Views:
    1,154
    Steven D'Aprano
    Apr 20, 2007
  5. David Bilsby
    Replies:
    5
    Views:
    2,037
    David Bilsby
    Oct 9, 2007
Loading...

Share This Page