Используйте Python для запроса базы данных Azure SQL с Azure AD - PullRequest
0 голосов
/ 06 марта 2020
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<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 TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()

Я вижу только, что есть имя пользователя && пароль для доступа, позволяющее мне подключиться к базе данных Azure SQL прямо сейчас.

Это способ разрешить мне подключаться к базе данных SQL с помощью Azure AD учетные данные? например, я хочу использовать device_code_credentials

device_code_credentials = DeviceCodeCredential(client_id, tenant_id=tenant_id, authority=authority_host_uri)

Я могу вызвать клиент службы BLOB с этими учетными данными, и мне интересно, есть ли простой способ в Python SDK для подключения к Azure SQL базе данных.

blob_service_client = BlobServiceClient(
   account_url=self.url,
   credential=self.credential
)

1 Ответ

1 голос
/ 09 марта 2020

Мы можем использовать Azure аутентификацию AD для подключения к базе данных Azure SQL.

Получить аутентификацию по паролю AD Active Directory на портале: enter image description here

Python пример кода:

import pyodbc

server = 'your_server.database.windows.net'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 17 for SQL Server}'
Authentication='ActiveDirectoryPassword'

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

cursor = cnxn.cursor()

cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...