我们的数据库是使用活动目录密码的Azure SQL服务器。我使用“连接到数据库 pyodbc/pymssql”方法时遇到错误。
连接数据库pyodbc 连接数据库pymssql
两者都不起作用并且出现错误。
我相信这个活动目录密码很棘手,所以上述方法不起作用。有人可以帮忙吗
当我尝试使用以下代码使用带有 Active Directory 密码的 Pyodbc 连接到 Azure SQL 时:
import pyodbc
username = "ADuserName"
password = "ADpassword"
host = "<serverName>.database.windows.net"
database = "<databaseName>"
authentication = "ActiveDirectoryPassword"
driver = '{ODBC Driver 17 for SQL Server}'
conn_string = (
f'DRIVER={driver};'
f'SERVER={host};'
f'DATABASE={database};'
f'UID={username};'
f'PWD={password};'
f'Authentication={authentication};'
)
conn = pyodbc.connect(conn_string)
cursor = conn.cursor()
cursor.execute('SELECT @@version')
for row in cursor:
print(row)
我收到以下错误:
根据本文,MFA 是所有 Azure 租户的默认登录方法。因此,在上面的代码中,我使用
ActiveDirectoryInteractive
而不是 ActiveDirectoryPassword
来符合 MFA 标准。
以下是使用 Active Directory 身份验证连接到 Azure SQL 服务器的代码:
import pyodbc
username = "ADuserName"
host = "<serverName>.database.windows.net"
authentication = "ActiveDirectoryInteractive"
driver = '{ODBC Driver 17 for SQL Server}'
conn_string = (
f'DRIVER={driver};'
f'SERVER={host};'
f'DATABASE={database};'
f'UID={username};'
f'Authentication={authentication};'
)
conn = pyodbc.connect(conn_string)
cursor = conn.cursor()
cursor.execute('SELECT @@version')
for row in cursor:
print(row)
会弹出提示输入AD密码进行验证。之后,它成功连接到Azure SQL数据库,没有任何错误。一旦我们使用此方法进行身份验证,连接到服务器时就无需提供密码。通过验证后会自动连接,如下图: