【发布时间】:2019-09-18 04:01:00
【问题描述】:
我有一个基于 alpine 的 docker 镜像,支持 Python,我试图通过它连接到 Azure SQL 服务。这是我的简单连接代码。
import pyodbc
server = 'blah1.database.windows.net'
database = 'mydb1'
username = 'myadmin'
password = 'XXXXXX'
driver= 'ODBC Driver 17 for SQL Server'
conn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
c = conn.cursor()
c.execute("SELECT * FROM dbo.customers")
print(c.fetchall())
print(type(c.fetchall()))
conn.commit()
conn.close()
在 Azure 中连接 SQL Server 时,代码生成以下错误:
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")nect)")
这是我的 Dockerfile:
FROM tiangolo/uwsgi-nginx:python3.7-alpine3.8
RUN apk update
RUN apk add gcc libc-dev g++ libffi-dev libxml2 unixodbc-dev
LABEL Name=code9 Version=0.0.1
EXPOSE 8000
ENV LISTEN_PORT=8000
ENV UWSGI_INI uwsgi.ini
WORKDIR /app
ADD . /app
RUN chmod g+w /app
RUN chmod g+w /app/db.sqlite3
RUN python3 -m pip install -r requirements.txt
我假设我是 unixODBC 将负责与 Azure 中的 SQL 服务器的连接,还是我需要为 alpine 安装 MS SQL 驱动程序?有没有可用的?我找不到一个。请帮忙。
【问题讨论】:
-
您具体遇到了什么错误?
-
@stackoverflow.com/users/7867968/c-nivs。这是错误消息: conn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server': file not found (0) (SQLDriverConnect)")nect)")
-
pyodbc.drivers()的输出是什么? -
@stackoverflow.com/users/7867968/c-nivs - empty array [ ] 另外,您是否从该线程中删除了详细回复?我发誓我从你那里看到了一些东西,现在当我回到这个线程时。它不见了。请你把它寄回来。这是关于使用 Debian 映像和查找驱动程序....
-
我把它放回去了,但请注意它不使用高山图像,这就是我删除它的原因,所以我不完全确定它是否可以在高山环境中工作(因为它正在使用
apk add而不是apt-get等)
标签: python sql-server docker pyodbc alpine