繁体   English   中英

无法使用 pyodbc 连接到 Azure SQL Server

[英]Cannot connect to Azure SQL Server using pyodbc

恐怕又是一篇关于来自 Python 的 Azure SQL Server 连接问题的帖子。 我已经在这个网站、微软网站和其他谷歌链接上浏览了多个线程,但我无法让它工作。

我正在使用最新版本的 Anaconda (Python 3.6.6) 并安装了 ODBC 驱动程序版本 17.2.0.1。

使用以下脚本:

import pyodbc

server = server = 'myserver.database.windows.net,1433' #also tried prepending tcp:....
database = 'db1' #not the real db name
username = 'username@myserver' #also tried username@mydomain.com
password = '123456' #obviously not my real password!
driver= '{ODBC Driver 17 for SQL Server}' #also tried v13 ODBC driver and 'SQL Server' here

cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';DATABASE='+database+';UID='+username)

cursor = cnxn.cursor()

我收到以下错误:

Error: ('IM004', "[IM004] [Microsoft][ODBC Driver Manager] Driver's SQLAllocHandle on SQL_HANDLE_ENV failed (0) (SQLDriverConnect)")

有人可以提供任何见解吗?

我知道这个答案有点晚了,但以防万一其他人需要帮助。

Azure 官方文档显示的参数与实际需要的参数不同:

https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-3-proof-of-concept-connecting-to-sql-using-pyodbc?view=sql-server-2017

对我有用的解决方案是访问 Azure 仪表板中数据库门户中的连接字符串。

如果您导航到您尝试连接的数据库实例并选择概览: 在此处输入图片说明

然后在右侧,您应该找到连接字符串: 在此处输入图片说明

然后您应该能够选择 ODBC 连接字符串,它只需要您替换密码: 在此处输入图片说明

我怀疑最能吸引大多数人的是选择合适的驱动程序。 正如您在此字符串和 pyodbc 文档中看到的,您必须根据您的数据库运行的内容指定要使用的驱动程序:

https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Windows

这个解决方案第一次对我有用,前提是我已经将我的 IP 添加到数据库防火墙。

所有其余相同的运行print(pyodbc.drivers()) driver='{SQL Server}'` 试试这个解决方案。 然后我可以连接到 AZURE SQL 数据库

我看不出 Python 语法有什么问题,我也不熟悉您收到的错误,但 Azure 文档确实表明您需要创建规则以允许来自计算机公共 IP 的连接,然后才能查询任何 Azure用 Python 托管数据库。

您可能已经这样做了,但是由于问题中没有提到它,因此无论如何可能值得澄清。

Azure 防火墙规则设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM