【发布时间】:2021-06-12 19:38:09
【问题描述】:
我们的组织有一个远程 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 服务器驱动程序][DBNETLIB]SQL Server 不存在或访问 拒绝。(17) (SQLDriverConnect); [08001] [微软] [ODBC SQL 服务器 驱动程序][DBNETLIB]ConnectionOpen (Connect())。 (53); [08001] [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性 (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 Driver Manager] 未找到数据源名称且未指定默认驱动程序 (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]Named Pipes Provider: 无法打开连接 到 SQL Server [53]。 (53) (SQLDriverConnect); [08001] [微软] [SQL Server Native Client 11.0]登录超时过期(0); [08001] [Microsoft][SQL Server Native Client 11.0]无效的连接字符串 属性(0); [08001] [Microsoft] [SQL Server Native Client 11.0]A 发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。未找到服务器 无障碍。检查实例名称是否正确以及 SQL Server 是否正确 配置为允许远程连接。有关详细信息,请参阅 SQL 服务器联机丛书。 (53)')
我也用过这个指南Microsoft guide connecting to SQL using pyodbc
由于我在 python 应用程序中使用 docker 容器,我希望它可以与数据库连接。
有人可以建议可能是什么问题,或者我该如何解决这个问题? 欢迎提出任何建议。
【问题讨论】:
-
我不懂德语,所以不能确定,但该图像表明您正在(成功)连接到 MySQL 实例,但您的代码正在尝试连接到 SQL Server 实例;技术完全不同。
-
“既然我们使用的是 docker 容器,我希望这可以工作。” Docker 中的 SQL Server,还是 Docker 中的 Python 应用程序?还;如果
pingSQL Server 地址会发生什么? -
@Larnu 哦,好吧。谢谢。我尝试使用 MySQL ODBC 3.51 驱动程序。
-
@gvee 当我尝试 ping 时它工作正常: ping
.org 。我收到来自 IP 地址的回复。和 Docker 中的 python 应用程序,我想将它连接到 MySQL 数据库。 -
查看
pyodbc.drivers()返回的列表,了解您的 Python 应用程序可以使用哪些 ODBC 驱动程序。
标签: python sql-server database pyodbc