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 使用 schememssql+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 中编辑连接的用户,以防止他们恶意使用此功能。例如,考虑以下用于
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=False
和ansi=True
。{ "Driver": "ODBC Driver 18 for SQL Server", "ApplicationIntent": "ReadOnly", "TrustedConnection": "Yes", "connect_kwargs": { "autocommit": false, "ansi": true } }
更多关于可以传递给
connect
的 kwargs 的详细信息,请参阅 pyodbc 文档。