我们的组织有一个远程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应用程序,所以我希望这将用于与数据库的连接。
有人能告诉我是什么问题或者我该如何解决这个问题吗?欢迎提出任何建议。
正如@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>;')