簡體   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