在Windows 7上无法使用pyodbc建立与sql-server的连接

Jam*_*son 9 python sql sql-server pyodbc activepython

我在Windows 7上使用ActivePython 2.7.2.5.

在尝试使用以下代码使用pyodbc模块连接到sql-server数据库时,我会收到后续的Traceback.关于我做错了什么的任何想法?

码:

import pyodbc
driver = 'SQL Server'
server = '**server-name**'
db1 = 'CorpApps'
tcon = 'yes'
uname = 'jnichol3'
pword = '**my-password**'

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
cursor = cnxn.cursor()
cursor.execute("select * from appaudit_q32013")
rows = cursor.fetchall()
for row in rows:
    print row
Run Code Online (Sandbox Code Playgroud)

追溯:

Traceback (most recent call last):
  File "pyodbc_test.py", line 9, in <module>
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)')
Run Code Online (Sandbox Code Playgroud)

mat*_*ata 16

您正在使用连接字符串'DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes',您正在尝试连接到名为的服务器,调用server的数据库db1等.它不使用您之前设置的变量,它们不会被使用.

可以将连接字符串参数作为关键字参数传递给connect函数,因此您可以使用:

cnxn = pyodbc.connect(driver='{SQL Server}', host=server, database=db1,
                      trusted_connection=tcon, user=uname, password=pword)
Run Code Online (Sandbox Code Playgroud)

  • @JamesNicholson 您还需要从连接字符串中删除“trusted_connection”属性,因为您提供了用户名和密码。您可以使用 Windows 身份验证(“trusted_connection”属性)或 SQL Server 身份验证(“user”和“password”属性),但不能同时使用两者。在我的测试中,如果两者都提供,则连接默认为 Windows 身份验证。 (2认同)

小智 6

我有相同的错误消息,在我的情况下,问题是[SQL Server]驱动程序需要TLS 1.0在我的服务器上禁用.更改为较新版本的SNAC,SQL Server Native Client 11.0修复了问题.

所以我的连接字符串看起来像:

cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}', 
                      host=server, database=db1, trusted_connection=tcon,
                      user=uname, password=pword)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,最后一些对我有用的东西! (2认同)