无法使用 python 连接到 Azure SQL 服务器
Cannot connect to the Azure SQL Server with python
我尝试了几次连接到 Azure SQL 数据库。
我使用了以下代码:
import pyodbc
sqlConnection = pyodbc.connect(
" Driver={ODBC Driver 17 for SQL Server};"
"Server=tcp:mftaccountinghost.database.windows.net,1433;"
"Database=mft_accounting;Uid=localhost;Pwd=#####;"
"Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;");
cursor = sqlConnection.cursor()
cursor.execute("select * from dbo.error_bills_catch")
for row in cursor:
print(cursor)
firstColumn = row[0]
cursor.close()
sqlConnection.close()
我得到的错误是 following:pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection (0) (SQLDriverConnect)')
有人可以帮忙吗?
这是我的连接字符串:Driver={ODBC Driver 13 for SQL Server};Server=tcp:mftaccountinghost.database.windows.net,1433;Database=mft_accounting;Uid=localhost;密码={your_password_here};加密=是;TrustServerCertificate=否;连接超时=30;
我用MacOs,试了几次重装驱动,还是没有效果。
谢谢。
请确保您已经创建了一个 SQL 具有连接数据库权限的登录名,因为“localhost”可能不是一个有效的登录名。您可以尝试创建一个包含的数据库用户,如下所示,并使用该包含的登录名连接到数据库。您是否创建了名为 localhost 的登录名?
CREATE USER yourlogin WITH PASSWORD = 'Yh-EhGFjh+';
GO
exec sp_addRoleMember 'db_datareader', 'yourlogin';
GO
确保您已按照 this 文档中的说明创建防火墙规则,并且服务器名称和数据库名称正确(您没有拼错)。
您还应该确认您已经安装了 here 推荐的 Python 驱动程序。
使用该驱动程序尝试以下代码行。
import pyodbc
server = 'mftaccountinghost.database.windows.net'
database = 'mft_accounting'
username ='TheLoginYouCreatedAbove'
password = '****'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+
';SERVER='+server+
';PORT=1433;DATABASE='+database+
';UID='+username+
';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM dbo.error_bills_catch")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
错误消息Client unable to establish connection
表示网络有问题。
可能的原因如下:
服务器地址错误。
您的本地网络问题。例如,您的本地网络可能会禁止通过端口 1433 的流量。
您的 IP 未添加到 Azure SQL 防火墙允许列表。查看教程:Use the Azure portal to manage server-level IP firewall rules
更新
我检查了我的 mac,并取得了成功。这是我的步骤:
- 安装 ODBC 驱动程序
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
- 在python
中安装pyodbc
模块
pip install pyodbc
将我的 IP 添加到 Azure 门户中的允许列表
脚本:
import pyodbc
cnxn = pyodbc.connect(
"Driver={ODBC Driver 17 for SQL Server};"
"Server=tcp:jackdemo.database.windows.net,1433;"
"Database=jackdemo;"
"Uid=jack;"
"Pwd=************;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
"Connection Timeout=30;")
cursor = cnxn.cursor()
cursor.execute("select * from Users")
row = cursor.fetchone()
while row:
print(str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
结果:
我成功获得了来自 table 个用户的所有用户:
我尝试了几次连接到 Azure SQL 数据库。
我使用了以下代码:
import pyodbc
sqlConnection = pyodbc.connect(
" Driver={ODBC Driver 17 for SQL Server};"
"Server=tcp:mftaccountinghost.database.windows.net,1433;"
"Database=mft_accounting;Uid=localhost;Pwd=#####;"
"Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;");
cursor = sqlConnection.cursor()
cursor.execute("select * from dbo.error_bills_catch")
for row in cursor:
print(cursor)
firstColumn = row[0]
cursor.close()
sqlConnection.close()
我得到的错误是 following:pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection (0) (SQLDriverConnect)')
有人可以帮忙吗?
这是我的连接字符串:Driver={ODBC Driver 13 for SQL Server};Server=tcp:mftaccountinghost.database.windows.net,1433;Database=mft_accounting;Uid=localhost;密码={your_password_here};加密=是;TrustServerCertificate=否;连接超时=30;
我用MacOs,试了几次重装驱动,还是没有效果。
谢谢。
请确保您已经创建了一个 SQL 具有连接数据库权限的登录名,因为“localhost”可能不是一个有效的登录名。您可以尝试创建一个包含的数据库用户,如下所示,并使用该包含的登录名连接到数据库。您是否创建了名为 localhost 的登录名?
CREATE USER yourlogin WITH PASSWORD = 'Yh-EhGFjh+';
GO
exec sp_addRoleMember 'db_datareader', 'yourlogin';
GO
确保您已按照 this 文档中的说明创建防火墙规则,并且服务器名称和数据库名称正确(您没有拼错)。
您还应该确认您已经安装了 here 推荐的 Python 驱动程序。
使用该驱动程序尝试以下代码行。
import pyodbc
server = 'mftaccountinghost.database.windows.net'
database = 'mft_accounting'
username ='TheLoginYouCreatedAbove'
password = '****'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+
';SERVER='+server+
';PORT=1433;DATABASE='+database+
';UID='+username+
';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM dbo.error_bills_catch")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
错误消息Client unable to establish connection
表示网络有问题。
可能的原因如下:
服务器地址错误。
您的本地网络问题。例如,您的本地网络可能会禁止通过端口 1433 的流量。
您的 IP 未添加到 Azure SQL 防火墙允许列表。查看教程:Use the Azure portal to manage server-level IP firewall rules
更新
我检查了我的 mac,并取得了成功。这是我的步骤:
- 安装 ODBC 驱动程序
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
- 在python 中安装
pyodbc
模块
pip install pyodbc
将我的 IP 添加到 Azure 门户中的允许列表
脚本:
import pyodbc
cnxn = pyodbc.connect(
"Driver={ODBC Driver 17 for SQL Server};"
"Server=tcp:jackdemo.database.windows.net,1433;"
"Database=jackdemo;"
"Uid=jack;"
"Pwd=************;"
"Encrypt=yes;"
"TrustServerCertificate=no;"
"Connection Timeout=30;")
cursor = cnxn.cursor()
cursor.execute("select * from Users")
row = cursor.fetchone()
while row:
print(str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
结果:
我成功获得了来自 table 个用户的所有用户: