python - 尝试从外部Python连接到Docker中的SQL Server

标签 python sql-server docker

我在https://www.youtube.com/watch?v=BVNWRYPv78o之后创建了以下Docker镜像:

docker pull microsoft/mssql-server-linux
docker run -d --name sql_server_name -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=YourPassword123' -p 1433:1433 microsoft/mssql-server-linux

现在,我想尝试从本地Python脚本访问服务器。
正在https://stackoverflow.com/a/58088919/6131111
我做:
brew install unixodbc
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql17 mssql-tools

我的/usr/local/etc/odbcinst.ini文件如下所示:
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.17.dylib
UsageCount=1

要知道我的服务器,我知道:
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sql_server_name
172.17.0.2

在python脚本中,我将连接字符串创建为:
connection_string = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=172.17.0.2;DATABASE=WideWorldImportersDW;UID=sa;PWD=YourPassword123'

我以前已经将WideWorldImportersDW导入到数据库中,如下所示:

enter image description here

但我得到:
pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

最佳答案

我使用本地IP地址作为服务器来解决它:

connection_string = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=192.168.1.47,1433;DATABASE=WideWorldImportersDW;UID=sa;PWD=YourPassword123'

关于python - 尝试从外部Python连接到Docker中的SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62114670/

相关文章:

sql - 使用数据透视表为以下输出创建查询

sql-server - 如何像在 T-SQL 中一样在 PL/SQL 中声明和使用变量?

sql-server - 替换sql server 2000中的ntext(超过4000个字符)

docker - 如何将 APM 服务器配置为 docker-compose 文件

docker - 无法在Docker中推送图像

python - 在 Python 3 中查找唯一不可散列的不可排序类型的最佳方法是什么

python - tensorflow "op"有什么作用?

python - GridSearchCV 给出 ValueError : continuous is not supported for DecisionTreeRegressor

postgresql - 如何消除对两个共同使用桥接网络的 docker 容器的需求?

python - 无法导入模块 'lambda_function' : No module named 'mysql'