diff --git a/trino/sqlalchemy/dialect.py b/trino/sqlalchemy/dialect.py index 7c1c92b2..309609b1 100644 --- a/trino/sqlalchemy/dialect.py +++ b/trino/sqlalchemy/dialect.py @@ -19,6 +19,7 @@ from trino import dbapi as trino_dbapi from trino.auth import BasicAuthentication +from trino.dbapi import Cursor from . import compiler, datatype, error @@ -260,6 +261,15 @@ def _get_default_schema_name(self, connection: Connection) -> Optional[str]: dbapi_connection: trino_dbapi.Connection = connection.connection return dbapi_connection.schema + def do_execute(self, cursor: Cursor, statement: str, parameters: Tuple[Any, ...], + context: DefaultExecutionContext = None): + cursor.execute(statement, parameters) + if context and context.should_autocommit: + # SQL statement only submitted to Trino server when cursor.fetch*() is called. + # For DDL (CREATE/ALTER/DROP) and DML (INSERT/UPDATE/DELETE) statement, call cursor.description + # to force submit statement immediately. + cursor.description + def do_rollback(self, dbapi_connection): if dbapi_connection.transaction is not None: dbapi_connection.rollback()