首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python错误:[FreeTDS][ Server ]无法连接到Server上的数据源(0) (SQLDriverConnect)

Python错误:[FreeTDS][ Server ]无法连接到Server上的数据源(0) (SQLDriverConnect)
EN

Stack Overflow用户
提问于 2020-12-13 13:03:18
回答 2查看 743关注 0票数 0

我试图使用Docker从Python中生成一个简单的调用。如果我运行python脚本,则SQL连接能够建立,但是它的不能从Docker中运行。

我的代码在下面

Dockerfile

代码语言:javascript
复制
from python:3

WORKDIR /code

COPY requirements.txt .


RUN apt-get update \
 && apt-get install unixodbc -y \
 && apt-get install unixodbc-dev -y \
 && apt-get install freetds-dev -y \
 && apt-get install freetds-bin -y \
 && apt-get install tdsodbc -y \
 && apt-get install --reinstall build-essential -y


RUN echo "[FreeTDS]\n\
Description = FreeTDS Driver\n\
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\n\
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so" >> /etc/odbcinst.ini



#Pip command without proxy setting
RUN pip install -r requirements.txt

COPY src/ .

CMD ["python", "./producer.py"]

producer.py

代码语言:javascript
复制
import pyodbc



connP = pyodbc.connect('driver={FreeTDS};'
                       'server={MYSERV01\SQLEXPRESS};'
                       'database=ABCD;'                       
                       'uid=****;'
                       'pwd=*****')

requirement.txt

代码语言:javascript
复制
kafka-python
pyodbc==4.0.28

错误消息

我提到了这篇文章,就这样做了。我在网上搜索决心,并尝试了几个步骤,但没有任何帮助。我对Docker非常陌生,没有Python方面的经验,所以任何帮助都会很好。提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2021-01-04 07:36:05

我试图连接到本地Server数据库。我参考了许多文章,并指出以下代码是有效的:

服务器应该有host.docker.inter,<port_no> --这就是问题所在。当涉及到sql服务器与docker映像不同的专用数据库时,直接提供服务器名称,但是当映像和数据库都位于同一服务器时,下面的代码可以工作。请检查SQL配置TCP地址(IP4All)中的端口号。

票数 1
EN

Stack Overflow用户

发布于 2020-12-15 23:26:58

在您的pyodbc.connect中,尝试将服务器赋值为'0.0.0.0‘,而不是任何其他值。

如果要从容器中调试它,请注释Dockerfile的最后一个CMD行。

构建您的码头集装箱

代码语言:javascript
复制
docker build -f Dockerfile -t achu-docker-container .

运行您的码头集装箱

代码语言:javascript
复制
docker run -it achu-docker-container /bin/bash

这会把你放进容器里。这就像,另一台机器。

去你的世界

代码语言:javascript
复制
cd code
python ./producer.py

上面写的是什么?(如果使用apt-get install vim安装任何编辑器,您将能够交互地编辑producer.py文件,并从正在运行的容器中修复问题。

然后,您可以将更改移动到源Dockerfile中,并使用它构建一个新的映像和容器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65275909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档