def run(self, statement):
<EOL>statement = statement.strip()<EOL>if not statement:  <EOL><INDENT>yield (None, None, None, None)<EOL><DEDENT>components = sqlparse.split(statement)<EOL>for sql in components:<EOL><INDENT>sql = sql.rstrip('<STR_LIT:;>')<EOL>if sql.endswith('<STR_LIT>'):<EOL><INDENT>special.set_expanded_output(True)<EOL>sql = sql[:-<NUM_LIT:2>].strip()<EOL><DEDENT>cur = self.conn.cursor()<EOL>try:<EOL><INDENT>for result in special.execute(cur, sql):<EOL><INDENT>yield result<EOL><DEDENT><DEDENT>except special.CommandNotFound:  <EOL><INDENT>cur.execute(sql)<EOL>yield self.get_result(cur)<EOL><DEDENT><DEDENT>
Execute the sql in the database and return the results.

        The results are a list of tuples. Each tuple has 4 values
        (title, rows, headers, status).