eladkal commented on a change in pull request #15533:
URL: https://github.com/apache/airflow/pull/15533#discussion_r620513299
##########
File path: airflow/providers/snowflake/hooks/snowflake.py
##########
@@ -245,3 +247,40 @@ def set_autocommit(self, conn, autocommit: Any) -> None:
def get_autocommit(self, conn):
return getattr(conn, 'autocommit_mode', False)
+
Review comment:
Related to point 1 - this problem (allow multiple queries) is not unique
to Snowflake. This also applies to Presto and Trino so whatever solution that
will be accepted here will most likely be copied to the other two providers as
well.
2. I'm not sure if
##########
File path: airflow/providers/snowflake/hooks/snowflake.py
##########
@@ -245,3 +247,40 @@ def set_autocommit(self, conn, autocommit: Any) -> None:
def get_autocommit(self, conn):
return getattr(conn, 'autocommit_mode', False)
+
+ def run(self, sql: Union[str, list], autocommit: bool = False, parameters:
Optional[dict] = None):
+ """
+ Runs a command or a list of commands. Pass a list of sql
+ statements to the sql parameter to get them to execute
+ sequentially
+
+ :param sql: the sql statement to be executed (str) or a list of
+ sql statements to execute
+ :type sql: str or list
+ :param autocommit: What to set the connection's autocommit setting to
+ before executing the query.
+ :type autocommit: bool
+ :param parameters: The parameters to render the SQL query with.
+ :type parameters: dict or iterable
+ """
+ if isinstance(sql, str):
+ sql = [sql]
+
+ with closing(self.get_conn()) as conn:
+ self.set_autocommit(conn, autocommit)
+
+ with closing(conn.cursor()) as cur:
+ for sql_statement in sql:
+
+ self.log.info("Running statement: %s, parameters: %s",
sql_statement, parameters)
+ if parameters:
+ cur.execute(sql_statement, parameters)
+ else:
+ cur.execute(sql_statement)
+ self.log.info("Rows affected: %s", cur.rowcount)
+ self.query_id = cur.sfqid
Review comment:
why not logging also the `query_id`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]