无法使用pyodbc连接MSSQL

时间:2019-05-28 10:38:58

标签: python sql-server python-3.x pyodbc

我已经在StackOverflow上查找了很多有关MSSQL与pyodbc的连接的类似问题,但是它们的解决方案都无济于事。
我正试图连接位于VM服务器上的MSSQL数据库,并且试图从本地系统访问它。
以下是代码:

import pyodbc

server = '172.xxx.xxx.xxx,1443'
database = 'sample_db'
username = 'SA'
password = 'xxxxx'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password+';Trusted_Connection=yes')
cursor = cnxn.cursor()

cursor.execute("SELECT name FROM sys.databases;")
results = cursor.fetchall()
print(results)

我遇到的错误如下:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

如果pyodbc还有其他替代方法可以更好地与MSSQL配合使用,请也提一下。 谢谢您的帮助。

修改

根据@GordThompson的建议,我在pyodbc.drivers()中检查了驱动程序,发现我的系统仅具有“ SQL Server”驱动程序,因此将驱动程序更改为SQL Server。当前代码如下:

import pyodbc
server = '172.xxx.xxx.xxx,1443'
database = 'sample_db'
username = 'SA'
password = 'xxxxx'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password+';Trusted_Connection=yes')
cursor = cnxn.cursor()

cursor.execute("SELECT name FROM sys.databases;")
results = cursor.fetchall()
print(results)

但是现在我得到了一个完全不同的错误,仍然不确定是什么原因
错误:

pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)')

1 个答案:

答案 0 :(得分:1)

使用#The values are cumulative so for the first variable the first marginal will be .1, the second is .2, the third is .3, and the fourth is .4 marginal <- list(c(0.1,0.3,0.6),c(0.4,0.7,0.9)) > marginal [[1]] [1] 0.1 0.3 0.6 [[2]] [1] 0.4 0.7 0.9 Trusted_Connection登录时,不要提及UID参数,这一点很重要。因此,当我删除PWD参数时,它能够成功建立连接。 所以后来对我有用的连接字符串就已经有了

Trusted_Connection

[由于@GordThompson并未将其发布为答案,因此我将其放置在此处并关闭它。
感谢@GordThompson]