【问题标题】:Windows Authentication With SQLAlchemy and pymssql使用 SQLAlchemy 和 pymssql 进行 Windows 身份验证
【发布时间】:2016-03-13 23:02:36
【问题描述】:

我想使用 pymssql 创建与 SQL Server 数据库的可信连接。鉴于该代码将被共享,我不希望用户输入他们的用户名或密码。我发现文档中有关如何实现此目的的信息相互矛盾。

我想要做的事情是这样的

engine = create_engine('mssql+pymssql://<Server>/<Database>?trusted=True')

有些事情说使用 trusted_connection=yes,其他人说使用trusted=True。这些选项都不适合我。每次我尝试使用引擎时,我都会收到一条错误消息,指出 trustedtrusted_connection 是一个意外的关键字参数。

我使用的是 SQLAlchemy 1.0.9 版和 pymssql 2.1.1 版。

【问题讨论】:

标签: python sql-server sql-server-2012 sqlalchemy pymssql


【解决方案1】:

我刚刚在一台 Windows 机器上测试了这个

  • Python 2.7.11、SQLAlchemy 1.0.11 和 pymssql 2.1.1,以及
  • Python 3.5.1、SQLAlchemy 1.0.14 和 pymssql 2.1.2(带有 FreeTDS 0.95.83 DLL)

对我来说效果很好:

from sqlalchemy import create_engine
conn_str = r'mssql+pymssql://(local)\SQLEXPRESS/myDb'
engine = create_engine(conn_str)
connection = engine.connect()
result = connection.execute("SELECT SYSTEM_USER AS me")
row = result.fetchone()
print(row['me'])

而且,即使在该计算机上停止了 SQL Browser 服务,此连接字符串仍然有效

conn_str = r'mssql+pymssql://localhost:52865/myDb'

因此,至少在 Windows 机器上,简单地省略用户名和密码将允许通过 Windows 身份验证连接到 SQL Server。

【讨论】:

    【解决方案2】:

    以防万一其他人偶然发现:
    似乎不再可以在 pymssql 中使用“受信任”或 windows auth。

    我刚刚尝试过这个,发现了一堆过去几年让用户感到沮丧的话题。 例如: pymssql windows authentication

    编辑: 为本地 SQL Server Express 启用 TCP/IP 后解决

    【讨论】:

    • 也许自从写了这些 cmets 后情况发生了变化,但是当我刚刚测试它时,它对我有用。详情见我的回答。
    • 我试过按照你的方法,但我无法让它工作。我没有使用 SQLAlchemy。例如:conn = pymssql.connect(server='localhost', database='TestDB')
    • 我刚刚测试了cnxn = pymssql.connect(server='localhost', port='52865', database='myDb'),它适用于 Python 3.5.1 和 pymssql 2.1.2。
    • 好的!现在我让它与 Python 2.7 一起工作。我使用的是 Sql Server Express,需要启用 TCP/IP。
    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2017-04-17
    • 2017-06-08
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多