airflow.providers.common.sql.hooks.handlers

函数

return_single_query_results(sql, return_last, ...)

确定何时只应返回单个查询结果。

fetch_all_handler(cursor)

返回 DbApiHook.run() 的结果。

fetch_one_handler(cursor)

返回 DbApiHook.run() 的第一个结果。

模块内容

airflow.providers.common.sql.hooks.handlers.return_single_query_results(sql, return_last, split_statements)[source]

确定何时只应返回单个查询结果。

出于兼容性原因,DBAPIHook 的行为有些令人困惑。在某些情况下,当运行多个查询时,返回值将是一个可迭代对象(列表),其中包含每个查询的结果。然而,在其他情况下,当运行单个查询时,返回值将仅是该单个查询的结果,而不会将结果包装在列表中。

在以下情况下,单个查询结果将在不将其包装在列表中的情况下返回:

  1. sql 是字符串且 return_last 为 True(无论 split_statements 的值如何)

  2. sql 是字符串且 split_statements 为 False

在所有其他情况下,结果都包装在一个列表中,即使只有一个语句需要处理。特别地,在以下情况下,返回值将是一个查询结果列表:

  1. sql 是字符串语句的可迭代对象时(无论 return_last 的值如何)

  2. sql 是字符串,split_statements 为 True 且 return_last 为 False 时

参数:
  • sql (str | collections.abc.Iterable[str]) – 要运行的 sql(字符串或字符串列表)

  • return_last (bool) – 是否只返回最后一个语句的输出

  • split_statements (bool | None) – 是否拆分字符串语句。

返回:

如果 hook 应返回单个查询结果,则为 True

返回类型:

bool

airflow.providers.common.sql.hooks.handlers.fetch_all_handler(cursor)[source]

返回 DbApiHook.run() 的结果。

airflow.providers.common.sql.hooks.handlers.fetch_one_handler(cursor)[source]

返回 DbApiHook.run() 的第一个结果。

此条目是否有帮助?