相关疑难解决方法(0)

如何使用Windows身份验证通过sqlalchemy连接到SQL Server?

sqlalchemy是Python的数据库连接模块,默认情况下使用SQL身份验证(数据库定义的用户帐户).如果要使用Windows(域或本地)凭据对SQL Server进行身份验证,则必须更改连接字符串.

默认情况下,由sqlalchemy定义,连接到SQL Server的连接字符串如下所示:

sqlalchemy.create_engine('mssql://*username*:*password*@*server_name*/*database_name*')
Run Code Online (Sandbox Code Playgroud)

如果使用您的Windows凭据,这将抛出类似于此的错误:

sqlalchemy.exc.DBAPIError: (Error) ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456)") None None
Run Code Online (Sandbox Code Playgroud)

在此错误消息中,代码18456标识SQL Server自身引发的错误消息.此错误表示凭据不正确.

python sql-server sqlalchemy

28
推荐指数
5
解决办法
3万
查看次数

SqlAlchemy相当于使用FreeTDS的pyodbc连接字符串

以下作品:

import pyodbc
pyodbc.connect('DRIVER={FreeTDS};Server=my.db.server;Database=mydb;UID=myuser;PWD=mypwd;TDS_Version=8.0;Port=1433;')
Run Code Online (Sandbox Code Playgroud)

以下失败:

import sqlalchemy
sqlalchemy.create_engine("mssql://myuser:mypwd@my.db.server:1433/mydb?driver=FreeTDS& odbc_options='TDS_Version=8.0'").connect()
Run Code Online (Sandbox Code Playgroud)

上面的错误消息是:

DBAPIError :(错误)('08001','[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnectW)')无无

有人可以指点我正确的方向吗?有没有办法告诉sqlalchemy将特定的连接字符串传递给pyodbc?

请注意:我希望保持此DSN-less.

python sql-server sqlalchemy pyodbc freetds

26
推荐指数
4
解决办法
3万
查看次数

标签 统计

python ×2

sql-server ×2

sqlalchemy ×2

freetds ×1

pyodbc ×1