Поделиться через


Краткое руководство: использование Python для выполнения запросов к базе данных в Azure SQL Database или управляемом экземпляре Azure SQL

Область применения:SQL база данных Azure, Управляемый экземпляр SQL Azure, Azure Synapse Analytics

При работе с этим кратким руководством вы будете использовать Python для подключения к Базе данных SQL Azure, Управляемому экземпляру SQL Azure или базе данных Synapse SQL, а затем выполните запрос данных с помощью инструкций T-SQL.

Документация mssql-python | Исходный код mssql-python | Пакет (PyPI)

Предварительные требования

Для выполнения этого краткого руководства вам потребуется:

Настройка

Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью mssql-python драйвера Python.

Замечание

Этот драйвер использует протокол табличного потока данных (TDS ), который включен по умолчанию в SQL Server, базе данных SQL в Fabric и Базе данных SQL Azure. Дополнительная конфигурация не требуется.

Установка пакета mssql-python

mssql-python Получите пакет из PyPI.

  1. Откройте командную строку в пустом каталоге.

  2. Установите пакет mssql-python.

    pip install mssql-python
    

Установка пакета python-dotenv

Получите python-dotenv с PyPI.

  1. В том же каталоге установите python-dotenv пакет.

    pip install python-dotenv
    

Проверка установленных пакетов

Средство командной строки PyPI можно использовать для проверки установки предполагаемых пакетов.

  1. Проверьте список установленных пакетов с помощью pip list.

    pip list
    

Создание новых файлов

  1. В текущем каталоге создайте новый файл с именем .env.

  2. В файле .env добавьте запись для строки подключения с именем SQL_CONNECTION_STRING. Замените заполнители <database-server-name> и <database-name> собственными значениями.

    Драйвер mssql-python имеет встроенную поддержку проверки подлинности Microsoft Entra. Authentication Используйте параметр, чтобы указать метод проверки подлинности.

    ActiveDirectoryDefault автоматически обнаруживает учетные данные из нескольких источников, не требуя интерактивного входа. Это рекомендуемый вариант для локальной разработки и работы в Windows, macOS и Linux.

    Для обеспечения наиболее надежной локальной разработки сначала войдите с помощью Azure CLI:

    az login
    

    Затем используйте этот формат строки подключения в .env файле:

    SQL_CONNECTION_STRING="Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryDefault;Encrypt=yes;TrustServerCertificate=no"
    

    ActiveDirectoryDefault оценивает учетные данные в следующем порядке:

    1. Переменные среды (для учетных данных сервисного принципала)
    2. Управляемое удостоверение (при работе в Azure)
    3. Azure CLI (из az login)
    4. Visual Studio (только для Windows)
    5. Azure PowerShell (из Connect-AzAccount)

    Подсказка

    Для рабочих приложений используйте конкретный метод проверки подлинности для вашего сценария, чтобы избежать задержки обнаружения учетных данных:

    • Azure App Service/Functions: использовать ActiveDirectoryMSI (управляемое удостоверение)
    • Интерактивный вход пользователя: ActiveDirectoryInteractive
    • Субъект-служба: использование ActiveDirectoryServicePrincipal

Подсказка

Строка подключения, используемая здесь, в значительной степени зависит от типа базы данных SQL, к которой вы подключаетесь. Дополнительные сведения о строках подключения и их синтаксисе см. в разделе DSN и ключевые слова строки подключения и атрибуты.

  1. Создайте файл sqltest.py в текстовом редакторе.

  2. Добавьте следующий код.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
    load_dotenv()
    
    with connect(getenv("SQL_CONNECTION_STRING")) as conn:
        with conn.cursor() as cursor:
            cursor.execute("SELECT TOP 3 name, collation_name FROM sys.databases")
            rows = cursor.fetchall()
            for row in rows:
                print(row.name, row.collation_name)
    

Выполнение кода

  1. В командной строке выполните следующую команду:

    python sqltest.py
    
  2. Убедитесь, что возвращены базы данных и их параметры сортировки, и закройте командное окно.

    Если появится сообщение об ошибке:

    • Убедитесь, что имя сервера, имя базы данных, имя пользователя и пароль, который вы используете, правильны.

    • Если вы запускаете код из локальной среды, убедитесь, что брандмауэр ресурса Azure, к которому вы пытаетесь получить доступ, настроен для разрешения доступа с IP-адреса вашей среды.