def run(conn, sql, config, user_namespace): if sql.strip(): for statement in sqlparse.split(sql): first_word = sql.strip().split()[0].lower() if first_word == 'begin': raise Exception("ipython_sql does not support transactions") if first_word.startswith('\\') and 'postgres' in str(conn.dialect): pgspecial = PGSpecial() _, cur, headers, _ = pgspecial.execute( conn.session.connection.cursor(), statement)[0] result = FakeResultProxy(cur, headers) else: txt = sqlalchemy.sql.text(statement) result = conn.session.execute(txt, user_namespace) try: # mssql has autocommit if config.autocommit and ('mssql' not in str(conn.dialect)): conn.session.execute('commit') except sqlalchemy.exc.OperationalError: pass # not all engines can commit if result and config.feedback: print(interpret_rowcount(result.rowcount)) resultset = ResultSet(result, statement, config) if config.autopandas: return resultset.DataFrame() else: return resultset #returning only last result, intentionally else: return 'Connected: %s' % conn.name
def run(conn, sql, config, user_namespace): if sql.strip(): for statement in sqlparse.split(sql): first_word = sql.strip().split()[0].lower() if first_word == 'begin': raise Exception("ipython_sql does not support transactions") if first_word.startswith('\\') and 'postgres' in str(conn.dialect): pgspecial = PGSpecial() _, cur, headers, _ = pgspecial.execute( conn.session.connection.cursor(), statement)[0] result = FakeResultProxy(cur, headers) else: txt = sqlalchemy.sql.text(statement) result = conn.session.execute(txt, user_namespace) try: # mssql has autocommit if 'mssql' not in str(conn.dialect): conn.session.execute('commit') except sqlalchemy.exc.OperationalError: pass # not all engines can commit if result and config.feedback: print(interpret_rowcount(result.rowcount)) resultset = ResultSet(result, statement, config) if config.autopandas: return resultset.DataFrame() else: return resultset #returning only last result, intentionally else: return 'Connected: %s' % conn.name
def run(conn, sql, config, user_namespace): if sql.strip(): for statement in sqlparse.split(sql): first_word = sql.strip().split()[0].lower() if first_word == 'begin': raise Exception("ipython_sql does not support transactions") if first_word.startswith('\\') and 'postgres' in str(conn.dialect): if not PGSpecial: raise ImportError('pgspecial not installed') pgspecial = PGSpecial() _, cur, headers, _ = pgspecial.execute( conn.session.connection.cursor(), statement)[0] result = FakeResultProxy(cur, headers) else: txt = sqlalchemy.sql.text(statement) result = conn.session.execute(txt, user_namespace) with conn.cursor() as cur: cur.execute(txt).fetchall() _commit(conn=conn, config=config) if result and config.feedback: print(interpret_rowcount(result.rowcount)) resultset = ResultSet(result, statement, config) if config.autopandas: return resultset.DataFrame() else: return resultset #returning only last result, intentionally else: return 'Connected: %s' % conn.name