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

新手上路,请多包涵

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

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

 sqlalchemy.create_engine('mssql://*username*:*password*@*server_name*/*database_name*')

如果使用您的 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

在此错误消息中,代码 18456 标识 SQL Server 本身抛出的错误消息。此错误表示凭据不正确。

原文由 vbiqvitovs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

为了将 Windows 身份验证与 sqlalchemy 和 mssql 一起使用,需要以下连接字符串:

ODBC 驱动程序:

 engine = sqlalchemy.create_engine('mssql://*server_name*/*database_name*?trusted_connection=yes')

SQL Express 实例:

 engine = sqlalchemy.create_engine('mssql://*server_name*\\SQLEXPRESS/*database_name*?trusted_connection=yes')

原文由 vbiqvitovs 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用的是受信任的连接/AD 而不是使用用户名/密码,或者以其他方式查看以下内容:

SA警告:未指定驱动程序名称;当使用 >DSN-less 连接时,这是 PyODBC 所期望的“未指定驱动程序名称;”

那么这个方法应该有效:

 from sqlalchemy import create_engine

server = <your_server_name>

database = <your_database_name>

engine = create_engine('mssql+pyodbc://' + server + '/' + database + '?trusted_connection=yes&driver=ODBC+Driver+13+for+SQL+Server')

原文由 Ray‘s Web Presence 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题