[Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0) (SQLDriverConnect)')

Sun*_*mar 7 python sql-server pyodbc

我无法使用 python 从 Unix 连接到 SQL 服务器。

我将无法将驱动程序从 ODBC Driver 17 for SQL Server 替换为 ODBC Driver 13 for SQL Server,如Pyodbc:由于其他依赖项导致的登录超时错误中所述。

有人可以建议一个替代方案吗?

代码:

import sqlalchemy as sa

from urllib import parse as db_parse

from sqlalchemy import event

params = db_parse.quote_plus(r"DRIVER={ODBC Driver 17 for SQL Server};SERVER='server,port';DATABASE=DB_NAME;username=USER_ID;password=PWD;Trusted_Connection=yes")

engine = sa.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(params))

connection = engine.connect()
Run Code Online (Sandbox Code Playgroud)

错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/e3q8)
Run Code Online (Sandbox Code Playgroud)

Fri*_*der 3

我的连接字符串看起来不同:

"DRIVER={ODBC Driver 17 for SQL Server};SERVER=myserver;DATABASE=mydb;UID=myuser;PWD=mypassword"

利兹 至

import pyodbc
connection = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};SERVER=myserver;DATABASE=mydb;UID=myuser;PWD=mypassword", autocommit=True)
Run Code Online (Sandbox Code Playgroud)

您使用的是用户名等,而不是 UID。所有以“my”开头的单词都必须替换为实际的数据库、用户和密码。您还应该删除该Trusted_Connection=True;部分,正如 Panagiotis Kanavos 在评论中指出的那样。这表示您正在使用 Windows 用户进行身份验证(这在 Linux 上显然不可用)。