我已经在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)')
答案 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]