(conn, sql, config, user_namespace)
| 268 | |
| 269 | |
| 270 | def run(conn, sql, config, user_namespace): |
| 271 | if sql.strip(): |
| 272 | for statement in sqlparse.split(sql): |
| 273 | if sql.strip().split()[0].lower() == 'begin': |
| 274 | raise Exception("ipython_sql does not support transactions") |
| 275 | txt = sqlalchemy.sql.text(statement) |
| 276 | result = conn.session.execute(txt, user_namespace) |
| 277 | try: |
| 278 | # mssql has autocommit |
| 279 | if 'mssql' not in str(conn.dialect): |
| 280 | conn.session.execute('commit') |
| 281 | except sqlalchemy.exc.OperationalError: |
| 282 | pass # not all engines can commit |
| 283 | if result and config.feedback: |
| 284 | print(interpret_rowcount(result.rowcount)) |
| 285 | resultset = ResultSet(result, statement, config) |
| 286 | if config.autopandas: |
| 287 | return resultset.DataFrame() |
| 288 | else: |
| 289 | return resultset |
| 290 | #returning only last result, intentionally |
| 291 | else: |
| 292 | return 'Connected: %s' % conn.name |
nothing calls this directly
no test coverage detected