【问题标题】:Sqlalchemy + pymssql connection failsSqlalchemy + pymssql 连接失败
【发布时间】: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 杀死了它。但我设法找到了解决方案,见下文。

标签: python sqlalchemy pymssql


【解决方案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
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 2014-09-27
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
相关资源
最近更新 更多