提问者:小点点

无法使用pyodbc连接到远程SQL数据库


我们的组织有一个远程SQL数据库,我正试图使用PyODBC连接到该数据库。

下面是测试代码:-

import pyodbc
                      
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=<name>.org;DATABASE=<dbname>;UID=<username>;PWD=<pwd>;PORT=<port>;')

但是,当我尝试使用PyODBC连接时,我无法连接并得到以下错误。

PyODBC.OperationalError:('08001','[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]SQL Server不存在或访问被拒绝.(17)(SQLDriverConnect);[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]ConnectionOpen(Connect()).(53);[08001][Microsoft][ODBC SQL Server驱动程序]无效连接字符串属性(0)')

我还尝试使用另一个工具连接到远程数据库(HeidiSQL)并正确工作。我可以连接到数据库。

但我不明白为什么我不能使用PyODBC进行连接。我还尝试使用IP地址而不是服务器名。

所以我还在pyodbc Connect中尝试了以下操作:-

SERVER=<name>.org,<port>

SERVER=<IP address>,<port>

SERVER=<IP address>

我还更新了ODBC SQL Server驱动程序。

我还尝试了MySQL ODBC 3.51驱动程序:-

cnxn = pyodbc.connect('DRIVER={MySQL ODBC 3.51 Driver};SERVER=<name>.org;DATABASE=<dbname>;UID=<username>;PWD=<pwd>;PORT=<port>;')

但我得到了错误:

PyODBC.InterfaceError:(“IM002”,“[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序(0)(SQLDriverConnect)")

当我尝试使用SQL Server Native Client 11.0驱动程序时,我遇到错误:

cnxn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=<name>.o`rg;DATABASE=<dbname>;UID=<username>;PWD=<pwd>;PORT=<port>;')

Pyodbc.OperationalError:('08001','[08001][Microsoft][SQL Server Native Client 11.0]命名管道提供程序:无法打开到SQL Server[53]的连接。(53)(SQLDriverConnect);[08001][Microsoft][SQL Server Native Client 11.0]登录超时过期(0);[08001][Microsoft][SQL Server Native Client 11.0]连接字符串属性无效(0);[08001][Microsoft][SQL Server Native Client 11.0]建立到SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或服务器不可访问。请检查实例名称是否正确以及SQL Server是否配置为允许远程

我还使用了此指南Microsoft指南使用pyodbc连接到SQL

由于我将docker容器用于python应用程序,所以我希望这将用于与数据库的连接。

有人能告诉我是什么问题或者我该如何解决这个问题吗?欢迎提出任何建议。


共1个答案

匿名用户

正如@Gord Thompson和@Larnu评论/回答的,@Gvee

我检查了pyodbc.drivers()返回的列表

import pyodbc
print(pyodbc.drivers() )

它返回的地方

["SQL Server“,”SQL Server Native Client 11.0“,”SQL Server Native Client RDA 11.0“,”SQL Server ODBC驱动程序17“,”PostgreSQL ANSI(x64)“,”PostgreSQL Unicode(x64)“,”Amazon Redshift(x64)“,”Microsoft Access驱动程序(*.mdb,.accdb)“,”Microsoft Excel驱动程序(.xls,*.xlsx,*.xlsm,.xlsb)“,”Microsoft Access Text驱动程序(.txt,*.csv)“,”MySQL ODBC 8.0 ANSI驱动程序“,”MySQL ODBC 8.0

我可以连接“MySQL ODBC 8.0 Unicode驱动程序”

cnxn = pyodbc.connect('DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=<name>.org;DATABASE=<dbname>;UID=<username>;PWD=<pwd>;PORT=<port>;')