Sqlalchemy + pymssql 连接失败

Posted

技术标签:

【中文标题】Sqlalchemy + pymssql 连接失败【英文标题】:Sqlalchemy + pymssql connection fails 【发布时间】:2018-08-28 07:40:04 【问题描述】:

我有freetds.conf 与数据库服务器的 dbserver 连接(我经常用于 php,该服务器位于我们自己网络上的单独服务器上。

只是为了测试连接,我有这个小程序:

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(r"mssql+pymssql://0:1@dbserver/db_database?charset=utf8".format('user','p@ssw0rd'))

def main():
    print("In main")
    connection=engine.connect()
    print("Connected")

if __name__ == "__main__":
    main()

程序在 main 中打印,但永远无法连接。如何调试此类问题以及导致此问题的原因是什么?

我使用 PHP 连接没有问题,因此没有网络限制,我使用 Python 3.6 运行它。

【问题讨论】:

你没有任何错误? 不,它只是安静下来,只有 ctrl-Z 杀死了它。但我设法找到了解决方案,见下文。 【参考方案1】:

毕竟我自己发现了错误。问题是我正在使用的 SQL 服务器上有一个实例。尽管在 freetds.conf 中提到了实例端口,但我还必须将其添加到 create_engine 调用中。

create_engine 的工作版本是这样的:

engine = create_engine(r"mssql+pymssql://0:1@dbserver:12345/db_database?charset=utf8".format('user','p@ssw0rd'))

其中 12345 是实例正在侦听的端口号。

我很抱歉错过了一个关键信息,但话又说回来,如果我意识到这一点,我可能什至不会问 - 然后其他人可能会在以后遇到同样的问题。

汉克

【讨论】:

是的,如果你不精确的话,sqlalchemy 使用标准端口 1433 用于 mssql

以上是关于Sqlalchemy + pymssql 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

sqlalchemy pymssql“对等连接重置”恢复

Python pymssql:Adaptive Server 连接失败

pymssql 连接失败,出现“无法识别排序规则”

pymssql:在数据库连接中设置字符集选项会导致连接失败

来自 SQLAlchemy 的加密数据库连接

pymssql连接sql server报错:pymssql._pymssql.OperationalError