Python 无法使用FreeTDS连接到Docker SQL SERVER容器

Python 无法使用FreeTDS连接到Docker SQL SERVER容器,python,linux,docker,pyodbc,freetds,Python,Linux,Docker,Pyodbc,Freetds,错误: FROM ubuntu:latest # install FreeTDS and dependencies RUN apt-get update \ && apt-get install -y python-pip python-dev \ && apt-get install unixodbc -y \ && apt-get install unixodbc-dev -y \ && apt

错误:

FROM ubuntu:latest

# install FreeTDS and dependencies
RUN apt-get update \
    && apt-get install -y python-pip python-dev \
    && 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

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

# install pyodbc
RUN pip install --trusted-host pypi.python.org pyodbc==4.0.26

WORKDIR /app
COPY . /app

RUN pip install -r requirements.txt

# run app.py upon container launch
CMD ["python", "app.py"]
connection=pyodbc.connect('Driver={FreeTDS};' pyodbc.OperationalError:('08S01',u'[08S01][unixODBC][FreeTDS][SQL Server]无法连接:自适应服务器不可用或不存在(20009)(SQLDriverConnect)' memorysnapshot_应用程序_1已退出,代码为1

Dockerfile:

FROM ubuntu:latest

# install FreeTDS and dependencies
RUN apt-get update \
    && apt-get install -y python-pip python-dev \
    && 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

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

# install pyodbc
RUN pip install --trusted-host pypi.python.org pyodbc==4.0.26

WORKDIR /app
COPY . /app

RUN pip install -r requirements.txt

# run app.py upon container launch
CMD ["python", "app.py"]
App.py

import pyodbc

app = Flask(__name__)

connection = pyodbc.connect('Driver={FreeTDS};'
                            'Server=localhost,1433;'
                            'Database=OTC;'
                            'UID=sa;'
                            'PWD=Password123!')



def test_localhost(cursor):
    cursor = connection.cursor()    
    cursor.execute("SELECT * FROM otc.dbo.memorysnapshot")  # WHATEVER QUERY YOU WANT TO EXECUTE GOES IN HERE
    for row in cursor:
        print render_template('index.html', cursor=data)


    connection, cursor = pyodbc_localhost()
    test_localhost(cursor)
    cursor.close()
    connection.close()

if __name__=="__main__":
    app.run(debug=True, host='0.0.0.0')

确保您可以使用
telnet[mssql容器fqdn或ip]从运行Flask的位置进行连接1433
。如果这样做有效,请尝试
tsql
以确保您可以手动连接。如果
telnet
失败,请检查容器化SQL Server上的防火墙。如果
tsql
失败,请检查您的凭据。如果两者都有效,请告诉我,我们将深入探讨。我有相同的问题,有解决方案吗?