ODBC 连接

odbc 连接类型提供与 ODBC 数据源(包括 MS SQL Server)的连接。

通过 pip install apache-airflow[odbc] 启用。

系统先决条件

此连接类型使用 pyodbc,它有一些系统依赖项,如 pyodbc wiki 中所述。

您还必须安装一个驱动程序

配置连接

要使用 OdbcHook hook(钩子),您必须在 Connection.extra 中或在 hook 初始化时作为参数指定要使用的驱动程序。

主机 (必需)

要连接到的主机。

Schema(模式) (可选)

指定在数据库中使用的 schema 名称。

登录(必需)

指定用于连接的用户名。

密码(必需)

指定用于连接的密码。

Extra (可选)

此处提供的任何键/值参数都将添加到 ODBC 连接字符串中。

此外,还有一些特殊的可选关键字会被单独处理。

  • connect_kwargs
    • connect_kwargs 下的键值对将作为 kwargs 传递给 pyodbc.connect

  • sqlalchemy_scheme
    • 这仅在 get_sqlalchemy_engine() 中调用 get_uri 时使用。默认情况下,hook 使用 scheme mssql+pyodbc。您可以在此处传递一个字符串值来覆盖此设置。

  • driver
    • 您系统上使用的驱动程序名称。请注意,只有在 airflow 配置部分的 providers.odbc 中将 allow_driver_in_extra 设置为 True 时,才会考虑此项(默认不考虑)。注意:如果从环境变量设置此配置,请使用 AIRFLOW__PROVIDERS_ODBC__ALLOW_DRIVER_IN_EXTRA=true

注意

如果将 allow_driver_extra 设置为 True,则允许用户通过 Airflow 连接的 extra 字段设置驱动程序。默认情况下,这是不允许的。如果启用此功能,您应确保信任那些可以在 UI 中编辑连接的用户,以防止他们恶意使用此功能。

注意

您负责在您的系统上安装 ODBC 驱动程序。

以下示例演示了 Microsoft ODBC 驱动程序 的用法。

例如,考虑以下用于 extra 的值

{
  "Driver": "ODBC Driver 18 for SQL Server",
  "ApplicationIntent": "ReadOnly",
  "TrustedConnection": "Yes"
}

这将生成包含这些参数的连接字符串

DRIVER={ODBC Driver 18 for SQL Server};ApplicationIntent=ReadOnly;TrustedConnection=Yes;

更多信息请参阅 DSN and Connection String Keywords and Attributes

用于环境变量等的连接 URI 示例

export AIRFLOW_CONN_MSSQL_DEFAULT='mssql-odbc://my_user:XXXXXXXXXXXX@1.1.1.1:1433/my_database?Driver=ODBC+Driver+18+for+SQL+Server&ApplicationIntent=ReadOnly&TrustedConnection=Yes'

如果您想向 pyodbc.connect 传递关键字参数,可以在 connect_kwargs 下提供一个字典。

例如,如果 extra 如下所示,调用 pyodbc.connect 时将使用 autocommit=Falseansi=True

{
  "Driver": "ODBC Driver 18 for SQL Server",
  "ApplicationIntent": "ReadOnly",
  "TrustedConnection": "Yes",
  "connect_kwargs": {
    "autocommit": false,
    "ansi": true
  }
}

更多关于可以传递给 connect 的 kwargs 的详细信息,请参阅 pyodbc 文档

此条目有帮助吗?