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)
我的连接字符串看起来不同:
"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 上显然不可用)。