【发布时间】: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