【问题标题】:Install SQL Server Driver to use Pyodbc lib in Airflow安装 SQL Server 驱动程序以在 Airflow 中使用 Pyodbc 库
【发布时间】:2019-08-29 21:37:36
【问题描述】:

我在 Kubernetes 中创建了一个气流图像,并且很难使用 Pyodbc 连接到我的 SQL Server 数据库以使我的 Python 脚本正常工作。

这是我设置的 DockerFile 的一部分:

FROM python:3.7-slim

# apt-get and system utilities
RUN apt-get update && apt-get install -yqq \
    curl gnupg gnupg2 gnupg1 \
    && rm -rf /var/lib/apt/lists/*

# adding custom MS repository
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/19.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN set -ex \
    && apt-get update -yqq \
    && apt-get upgrade -yqq \
    && apt-get install -yqq --no-install-recommends build-essential \
    && export ACCEPT_EULA=Y \
    && apt-get install -yqq msodbcsql17 freetds-dev freetds-bin tdsodbc unixodbc-dev  \
    && apt-get update \
    && export ACCEPT_EULA=Y  \
    && apt-get install -yqq mssql-tools \
    && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc \
    && /bin/bash -c "source ~/.bashrc" \
    && apt-get install -yqq default-libmysqlclient-dev \
    && pip install -U pip setuptools wheel \
    && pip install -r ${AIRFLOW_HOME}/requirements.txt \
    && pip install gcloud \
    && pip install apache-airflow[crypto,postgres,jdbc,gcp_api,mssql,mysql,kubernetes,gcp]

它可以毫无问题地创建图像。现在我发送尝试连接到 Sql Server 的 python 脚本部分:

import pyodbc

    database='dbd'
    uid = 'user'
    pwd = 'pass'
    server = '192.168.0.1'
    driver = "Driver={ODBC Driver 17 for SQL Server};server=" + server + ";database=" + database + ";uid=" + uid + ";pwd=" + pwd
    # MySQL Credentials and settings
    db = pyodbc.connect(driver)
    cursor = db.cursor()

我检查了我的 pod 中的 odbcinst.ini 文件,它看起来像这样:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.1.1
UsageCount=1

最后我得到的错误信息如下:

错误 - ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol] (-1) (SQLDriverConnect)')

我还能做些什么来测试与 SQL Server 的连接性?

【问题讨论】:

  • 代码中的“Driver”和“{ODBC Driver 17 for SQL Server}”之间没有=。见docs.microsoft.com/en-us/sql/connect/python/pyodbc/…
  • 天啊!现在,更改错误消息: ERROR - ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol] (-1) ( SQLDriverConnect)')
  • @DavidBrowne-Microsoft 你能帮忙解决新的错误消息吗?

标签: python sql-server dockerfile airflow pyodbc


【解决方案1】:

我找到了一个更简单的库来使用 Airflow:

import pymssql

    driver = pymssql.connect(server='192.168.0.1',user='user',password='pass',database='dbd',port='1433')
    cursor = db.cursor()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2016-04-23
    • 2020-01-24
    • 2023-01-13
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多