python - 与 Pymssql / Adaptive Server 连接失败(Windows.net 与 Azure.com)
问题描述
我正在尝试使用我以前多次使用过的以下方法连接到新数据库:
import pymssql
server = "servername.database.windows.net"
user = "user"
password = "pwd"
conn = pymssql.connect(server, user, password, "DB")
我收到此错误消息:
MSSQLDatabaseException: (20004, b'DB-Lib error message 20004, severity 9:\nRead from the server failed (servername.database.windows.net:1433)\nNet-Lib error during Connection reset by peer (54)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (servername.database.windows.net:1433)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (servername.database.windows.net:1433)\nNet-Lib error during Operation timed out (60)\n')
其他帖子的第一个建议是检查 FreeTDS 的安装。我的 FreeTDS 是最新的,连接到另一台服务器没有问题:“server2.cloudapp.azure.com”。两者都是天蓝色的sqlserver,所以我不确定连接问题可能是什么。为什么会这样?任何帮助表示赞赏。
解决方案
我搜索了很多,并找到了解决方案。
似乎pymssql
您直接使用pypi.org中的 pip 安装的模块无法正常使用 PaaS Azure SQL。您需要按照官方教程(为pymssql Python开发配置开发环境)下载具体的whl文件并手动安装。
就我而言,我使用带有 Python 3.7 的 Windows 操作系统,所以我下载了pymssql-2.1.4-cp37-cp37m-win_amd64.whl
. cp37
对于python 3.7版。win
适用于 Windows 操作系统。amd64
对于 64 位版本。您需要根据您的环境选择正确的一种。
然后使用pip install {your_whl_file}
. 之后,我可以连接到我的 Azure SQL:
import pymssql
server = 'jackdemo.database.windows.net'
database = 'jackdemo'
username = 'jack@jackdemo'
password = '***********'
cnxn = pymssql.connect(server, username, password, database)
cursor = cnxn.cursor()
cursor.execute("select * from Users")
row = cursor.fetchone()
while row:
print(str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
结果:
顺便说一下,我可能会尝试解释一下为什么您可以使用 *.cloudapp.azure.com 连接到 sql server。根据 URI 路径,它似乎是 Azure VM 的 DNS 名称。如果是这样,pymssql 模块可以与该 VM 上的 sql 服务器配合使用,因为它不是 PaaS Azure SQL。
另一个建议是使用pyodbc
. 我看到 Azure SQL 文档中的示例使用它。它可能会减少麻烦。
推荐阅读
- c++ - 为人工运算符重载返回引用是否有效?
- python - 如果字符串包含子字符串列表中的任何元素,如何查找字符串的起始索引
- html - 滚动时,正文一直到导航栏
- java - 如何通过 AWS Java SDK v2 中的 PutObjectRequestBuilder 添加自定义标头?
- node.js - 从 URL 检索 JSON 并使用 Cloud Functions 将其转换为 Cloud Firestore 集合
- merge - 在 Tableau 中拆分和合并列
- c# - ReSharper 和 StyleCop.Analyzers
- javascript - 如何在 Typescript (Nodejs/Deno) 中在运行时动态初始化类实例
- java - RecyclerView- I/ViewConfigCompat:在 ViewConfiguration 上找不到方法 getScaledScrollFactor(),Firebase 数据不显示
- r - 如何在 igraph 中连接图形的组件