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 连接失败的主要内容,如果未能解决你的问题,请参考以下文章