【发布时间】:2020-02-14 07:06:01
【问题描述】:
我正在尝试在使用 Docker 托管的 SQL Server 2017 数据库上使用 pyodbc 创建表。我也在使用网络,以便以后可以从另一个 Docker 映像连接到它。但是,我收到以下错误
pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
这就是我创建连接的方式。
要创建和运行数据库服务器,
docker run --name mssqldocker -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<password>' -e 'MSSQL_PID=Express' -p 7000:7000 --network=lambda-local-mssql -v <my_path> -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu
我也试过添加
-h "mssqldocker"
运行 Docker 映像的命令,然后使用“mssqldocker”而不是 localhost,但无济于事,因为不匹配的主机名似乎是一起使用 DB 和 Docker 时反复出现的主题。还尝试添加 \sqlexpress 也没有效果。 Python代码如下
import pyodbc
import sql_clauses
from settings import ENDPOINT, PORT, USERNAME, PASSWORD
cnxn = pyodbc.connect(
'DRIVER={ODBC Driver 17 for SQL Server}' +
';SERVER=' + ENDPOINT + ';UID=' + USERNAME +
';PWD=' + PASSWORD)
cursor = db.cursor()
cursor.execute(create_database(dbname))
cnxn.commit()
cnxn.close()
print("Database created")
设置文件如下
ENDPOINT="localhost"
PORT = 7000
USERNAME="SA"
PASSWORD=<password>
【问题讨论】:
-
Sql server 默认使用 1433 端口,尝试使用 7000 代替(在你的 python 代码和运行 docker 镜像的命令中)
-
是的,完成了这项工作。
标签: python sql-server docker pyodbc