(self, query)
return chain((first_row,), rows)
Called by `execute`, this triggers query execution to check for errors immediately in a way that is compatible
        with any library. If there are no errors, this is guaranteed to return an iterator over the result set.
Called by `execute`, this triggers query execution to check for errors immediately in a way that is compatible
        with any library. If there are no errors, this is guaranteed to return an iterator over the result set.
Called by execute this triggers query execution to check for errors immediately in a way that is compatible with any library . If there are no errors this is guaranteed to return an iterator over the result set .
def execute_query(self, query):
        """
        Called by `execute`, this triggers query execution to check for errors immediately in a way that is compatible
        with any library. If there are no errors, this is guaranteed to return an iterator over the result set.
        """
        rows = self.executor(query)
        if rows is None:
            return iter([])
        else:
            rows = iter(rows)

        # Ensure we trigger query execution
        try:
            first_row = next(rows)
        except StopIteration:
            return iter([])

        return chain((first_row,), rows)
def execute_query ( self , query ) : rows = self . executor ( query ) if rows is None : return iter ( [ ] ) else : rows = iter ( rows ) # Ensure we trigger query execution try : first_row = next ( rows ) except StopIteration : return iter ( [ ] ) return chain ( ( first_row , ) , rows )