气流-sql_alchemy_conn(Azure SQL数据库)

时间:2020-03-16 17:04:35

标签: azure-sql-database airflow

我要在Azure中配置Airflow,并且云中有可用的SQL数据库,我可以在Airflow中配置它吗?还是需要是postgres?

如果可能的话,您能用sql_alchemy_conn变量举一个例子吗?

1 个答案:

答案 0 :(得分:1)

我发现文档Setting up Airflow on Azure & connecting to MS SQL Server可以为您提供帮助。

摘要:

MSSQL:

Azure提供可伸缩的托管SQL Server实例,事实证明,它是数据存储库的不错选择。但是,来自puckels的气流的基本图像不会与此数据库交互。在这种特定情况下,我们不是在考虑建立数据库来托管气流元数据(尽管可能),而是将其作为某些目标的目标目的地。

为了利用与MsSQL的连接,需要安装MsSQL驱动程序。 Microsoft的website提供了有关如何为Linux设置此驱动程序的文档。由于最新的puckel / docker-airflow映像基于“ python:3.6-slim”,其本身基于debian 9“ stretch”,因此,我们可以按照Microsoft网站上的Debian 9文档,将这些依赖项添加到映像中:

RUN apt-get install --reinstall build-essential -y
RUN apt-get update
RUN apt-get install gcc unixodbc-dev gnupg2 apt-transport-https curl -y \
  && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list 
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install msodbcsql17 -y
RUN ACCEPT_EULA=Y apt-get install mssql-tools -y
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

完成此操作后,将需要通过pip安装一些软件包:

RUN  pip install 'apache-airflow[mssql]' \
                 'pyodbc' \
                 'pymssql'

airflow [mssql]包添加了运算符和挂钩以与MsSQL进行交互,而pyodbc和pymsqsl为MsSQL提供了数据库接口。安装驱动程序和python软件包后,我们现在可以使用以下格式的SQL Alchemy连接字符串连接到指定的MsSQL服务器:

connectionString = \
"mssql+pyodbc://{user}:{pwd}@{host}:{port}/{db}?driver=ODBC+Driver+17+for+SQL+Server"

希望这会有所帮助。