使用Python通过Windows身份验证连接到MS SQL Server?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python通过Windows身份验证连接到MS SQL Server?相关的知识,希望对你有一定的参考价值。

如何使用Windows身份验证将MS SQL Server与pyodbc库连接?

我可以通过MS Access和SQL Server Management Studio连接,但无法获得Python的工作连接ODBC字符串。

这是我尝试过的(也没有'Trusted_Connection=yes'):

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='[system_name]',
               database='[databasename]')

pyodbc.connect('Trusted_Connection=yes', uid='me',
               driver='{SQL Server}', server='localhost',
               database='[databasename]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               uid='me', pwd='[windows_pass]', database='[database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               database='[server_name]\[database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}', server='localhost',
               database='[server_name][database_name]')

pyodbc.connect('Trusted_Connection=yes',
               driver='{SQL Server}',
               database='[server_name][database_name]')
答案

您可以将连接字符串指定为一个使用分号(;)作为参数分隔符的长字符串。

工作范例:

import pyodbc
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.SQLEXPRESS;Database=myDB;Trusted_Connection=yes;')
cursor = cnxn.cursor()
cursor.execute("SELECT LastName FROM myContacts")
while 1:
    row = cursor.fetchone()
    if not row:
        break
    print(row.LastName)
cnxn.close()

对于具有大量参数的连接字符串,以下内容将以相似的方式完成相同的操作:

conn_str = (
    r'Driver={SQL Server};'
    r'Server=.SQLEXPRESS;'
    r'Database=myDB;'
    r'Trusted_Connection=yes;'
    )
cnxn = pyodbc.connect(conn_str)

(请注意,各个字符串组件之间没有逗号。)

另一答案

也可以使用关键字指定Windows身份验证。在功能上与接受的答案没有什么不同,我认为它使代码格式化更容易:

cnxn = connect(driver='{SQL Server}', server='localhost', database='test',               
               trusted_connection='yes')
另一答案

只是想添加一些东西,因为我在这里看到使用localhost的解决方案;根据我的经验,SQL Server存在此问题,不确定它是ODBC驱动程序还是服务itse,如果您不想指定本地计算机名,则更喜欢使用(本地)。

cnxn = connect(driver='{SQL Server}', server='(local)', database='test',               
               trusted_connection='yes')

以上是关于使用Python通过Windows身份验证连接到MS SQL Server?的主要内容,如果未能解决你的问题,请参考以下文章

通过***通过Windows身份验证连接到sql [关闭]

远程连接到 MSSQL,使用 Windows 身份验证,JAVA

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

通过 Windows 远程桌面连接到 SQL 数据库:登录来自不受信任的域,不能与 WIndows 身份验证一起使用

Jetbrains 0xDBe:使用 Windows 身份验证连接到 SQL Server?

通过powershell Enter-PSSession连接到SQL Server 2012(使用Windows身份验证)