code: def select(conn, query: str, params=None, name=None, itersize=5000):
      
  
      with conn.cursor(name, cursor_factory=NamedTupleCursor) as cursor:
          cursor.itersize = itersize
          cursor.execute(query, params)
  
          for result in cursor:
              yield result
docs: Return a select statement's results as a namedtuple.
  
      Parameters
      ----------
      conn : database connection
      query : select query string
      params : query parameters.
      name : server side cursor name. defaults to client side.
      itersize : number of records fetched by server.