当前位置: 首页 > 知识库问答 >
问题:

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

莫振
2023-03-14

我们的组织有一个远程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个答案

羊昊苍
2023-03-14

正如@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>;')
 类似资料:
  • 问题内容: 由于某种原因,我似乎无法连接到网络之外的任何SQL Server,但是如果我通过VPN在网络内,则没有问题。我的代码对于本地连接是这样的: 以下是我正在尝试的远程操作: 尝试连接时,大约15秒左右后,我抛出以下错误: pyodbc.Error:(‘08001’,’[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriver

  • 问题内容: 我正在使用SQL Server 2008 R2和Microsoft Excel。 我已将服务器设置为通过Windows用户 或 数据库用户登录 我 可以 用数据库用户正常登录数据库 我 可以 使用Silverlight应用程序连接到数据库 我 无法 弄清楚如何从Excel中的远程PC连接 我去了Excel->数据->从其他来源->从SQL Server 我的服务器名称是,因此在Exce

  • 我正在尝试使用jdbc连接到我的MS SQL2008数据库,如下所示,但它的给出错误 我的数据库名为,实例名为。请建议我如何提供数据库实例名称和数据库名称在URL。 上面写着 但是当我尝试用相同的用户名和密码从DB GUI登录时,它被登录了。想知道在jdbc设置中在哪里提供数据库实例的详细信息 我也试过用下面的dut不管用

  • 我试图使用pyodbc连接到Azure SQL数据库,但收到错误: Pyodbc.InterfaceError:('28000','[28000][Microsoft][SQL Server的ODBC驱动程序17][SQL Server]用户'adminc'登录失败。(18456)(SQLDriverConnect);[28000][Microsoft][SQL Server的ODBC驱动程序17

  • 我正在使用dbeaver连接到远程mongodb服务器,这需要用户名和密码。我可以使用命令连接到它,但使用DBEAVER失败。 我试过所有这些凭据机制,但没有一个奏效。当我使用简单的机制时,它说 DBException:连接到Mongo实例[10.20.88.19]com.MongoDb.MongoMeoutException:MongoMeoutException:等待与ReadPreferen

  • 问题内容: 我正在尝试在Python 3.3(Windows 7-64位)上使用SQLAlchemy(带有pyodbc)连接到SQL Server 2012数据库。我可以使用直接的pyodbc进行连接,但是无法使用SQLAlchemy进行连接。我有用于数据库访问的dsn文件设置。 我像这样直接使用pyodbc成功连接: 对于sqlalchemy,我尝试过: 该方法实际上并没有建立连接并成功,但是如