gpt4 book ai didi

python - 无法通过 pymssql 连接到 SQL Server

转载 作者:太空狗 更新时间:2023-10-29 18:24:47 26 4
gpt4 key购买 nike

我正在尝试通过 pymssql 从本地服务器上的 *nix 系统连接到在 Windows XP 系统上运行的 SQL Server。但是连接失败如下图

db = pymssql.connect(host='192.168.1.102',user='www',password='test',database='TestDB')
Traceback (most recent call last):

File "<stdin>", line 1, in <module>
File "pymssql.pyx", line 457, in pymssql.connect (pymssql.c:6041)
raise InterfaceError(e[0])
pymssql.InterfaceError: Connection to the database failed for an unknown reason.

我尝试过的事情:

  1. 将 SQL Server 和浏览器设置为作为网络服务器运行。
  2. 设置用户“www”。我还在 SQL Studio 中本地测试了这个用户。
  3. 关闭 Windows 防火墙(当然是暂时关闭)。

我缺少一些东西 - 我只是不知道它是什么。我在 Windows 上尝试了所有无限菜单选项都无济于事。我注意到的一件事是,如果 Windows 防火墙打开(我为 SQL Server 设置了一个异常(exception))python 会暂停很长时间然后给出错误。如果防火墙关闭,则会立即出现错误。

SQL Server 中是否有我可以查看的日志?

最佳答案

明白了!我认为问题的根源在于没有给予 Free TDS 应有的关注。免费 TDS 显然是 pymssql 背后的驱动程序,并提供与其他数据库的连接 - SQL Server 就是其中之一。

freetds.conf 文件位于我的系统 (Mac Book Pro) 上的/usr/local/etc。

此文件包含安装的默认值。但是,我之前添加了一个定义以便我可以连接但忘记了它,不幸的是没有做笔记。

无论如何,这是我附加到 freetds.conf 的示例:

[SomeDB]
host = 192.168.1.102
port = 1219
tds version = 7.0

然而,令人费解的是我将端口设置为 1219。我在 SQL Studio 中将其手动设置为 1433。另外,我使用的是 TDS 版本 0.82,所以我不知道 7.0 是如何适应的。

接下来,我使用“tsql”测试了连接性,如下所示:

tsql -S SomeDB -U www

我输入密码并获得允许进行 SQL 查询的命令行。

接下来,我测试了使用 pymssql 的连接,如下所示:

db = pymssql.connect(host='SomeDB',user='www',password='cylon',database='TestDB')

如您所见,我需要使用 freetds.conf 文件中的主机名,而不是直接使用 IP。然后,我使用额外的 Python 代码测试了一个简单的查询,以确保我可以从数据库中读取数据。

我希望这对以后的其他人有帮助。

关于python - 无法通过 pymssql 连接到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com