Я пытаюсь создать таблицу с помощью pyodb c в базе данных SQL Server 2017, размещенной с использованием Docker. Я также использую сеть, чтобы потом подключиться к ней из другого 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
I также попытался добавить
-h "mssqldocker"
в команду для запуска образа Docker и затем использовать «ms sqldocker» вместо localhost, но безрезультатно, поскольку несоответствующие имена хостов, по-видимому, являются повторяющаяся тема при использовании БД и 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>