无法使用 pyodbc 连接 MSSQL
unable to connect MSSQL using pyodbc
我已经在 Whosebug 上查找了很多关于 MSSQL 与 pyodbc 连接的类似问题,但他们的解决方案 none 有所帮助。
我正在尝试连接位于 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 服务器。当前代码如下所示:
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)')
重要的是在 logging-in 使用 UID
和 PWD
时不要提及 Trusted_Connection
参数。因此,当我删除 Trusted_Connection
参数时,它能够成功建立连接。
所以后来为我工作的连接字符串只有这些,
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
cursor = cnxn.cursor()
[ 因为@GordThompson 没有 post 它作为答案,我把它放在这里并关闭它。
谢谢@GordThompson ]
我已经在 Whosebug 上查找了很多关于 MSSQL 与 pyodbc 连接的类似问题,但他们的解决方案 none 有所帮助。
我正在尝试连接位于 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 服务器。当前代码如下所示:
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)')
重要的是在 logging-in 使用 UID
和 PWD
时不要提及 Trusted_Connection
参数。因此,当我删除 Trusted_Connection
参数时,它能够成功建立连接。
所以后来为我工作的连接字符串只有这些,
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
cursor = cnxn.cursor()
[ 因为@GordThompson 没有 post 它作为答案,我把它放在这里并关闭它。
谢谢@GordThompson ]