Быстрый старт: Подключение с помощью драйвера mssql-python для Python

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

Драйвер mssql-python не требует внешних зависимостей на компьютерах Windows. Драйвер устанавливает все, что требуется с одной pip установкой, что позволяет использовать самую последнюю версию драйвера в новых сценариях без нарушения работы других сценариев, для обновления и тестирования которых у вас нет времени.

Используйте пример локальной SQL-аутентификации в этой статье только для локальной разработки на инстансе SQL Server, которым вы управляете. При работе с База данных SQL Azure, базами данных SQL в Fabric, совместно используемыми средами разработки, CI и производственными развертываниями начните с аутентификации Microsoft Entra или другого бесспарольного метода аутентификации.

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

Предпосылки

Создайте базу данных или подключитесь к существующей базе данных в SQL Server, База данных SQL Azure или в базе данных SQL в Fabric. Используйте следующие шаги, чтобы настроить базу данных с примерной схемой AdventureWorks2025, и сохраните строку подключения для дальнейшего использования.

Создание базы данных SQL

Создайте или подключитесь к SQL-базе данных на одной из следующих платформ:

Настройка

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

Замечание

Этот драйвер использует протокол Tabular Data Stream (TDS ). SQL Server, SQL Database in Fabric и База данных SQL Azure по умолчанию включают TDS, поэтому дополнительная настройка не требуется.

Установка пакета 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. Создайте файл с именем app.py.

  2. Добавьте строку документации для модуля.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Импорт пакетов, включая mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. Используйте функцию mssql-python.connect для подключения к базе данных SQL.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. В текущем каталоге создайте новый файл с именем .env.

  6. В файле .env добавьте запись для строки подключения с именем SQL_CONNECTION_STRING. Используйте один из следующих примеров и замените заполняющие значения на ваши реальные значения.

    Для База данных SQL Azure или SQL Database in Fabric начните с аутентификации Microsoft Entra:

    SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Для локального SQL Server в процессе разработки начинайте с SQL-аутентификации:

    SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"
    

    Предостережение

    Воспринимайте .env это как удобство локальной разработки, а не как механизм развертывания. Никогда не коммитируйте его, никогда не используйте этот образец аутентификации SQL в общих или производственных средах, и поддерживайте включённую проверку сертификатов вне локальной разработки.

    Используйте строки соединения для адаптации сэмпла под именованные экземпляры, контейнеры или расширенные настройки. Если вы подключаетесь к База данных SQL Azure или SQL Database в Fabric, используйте аутентификацию Microsoft Entra для доступа без пароля и интерактивного входа. Для более широких рекомендаций по секретам и сертификатам см. лучшие практики безопасности.

Выполнение запроса

Используйте строку SQL-запроса для выполнения запроса и анализа результатов.

  1. Создайте переменную для строки запроса SQL.

    SQL_QUERY = """
    SELECT
    TOP 5 c.CustomerID,
    c.CompanyName,
    COUNT(soh.SalesOrderID) AS OrderCount
    FROM
    SalesLT.Customer AS c
    LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID
    GROUP BY
    c.CustomerID,
    c.CompanyName
    ORDER BY
    OrderCount DESC;
    """
    
  2. Используется cursor.execute для извлечения результирующих наборов из запроса к базе данных.

    cursor = conn.cursor()
    cursor.execute(SQL_QUERY)
    

    Замечание

    Эта функция фактически принимает любой запрос и возвращает набор результатов. Для повторения набора результатов используйте cursor.fetchone().

  3. Используйте cursor.fetchall с циклом for для получения всех записей из базы данных. Затем распечатайте записи.

    records = cursor.fetchall()
    for r in records:
      print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. Сохранитеapp.py файл.

    Подсказка

    На macOS, оба ActiveDirectoryInteractive и ActiveDirectoryDefault работают для проверки подлинности Microsoft Entra. ActiveDirectoryInteractive запрашивает вход при каждом запуске скрипта. Чтобы избежать повторных запросов при входе, войдите один раз через Azure CLI, запустив az login, затем используйте ActiveDirectoryDefault, который повторно использует кэшированный учетный код.

  5. Откройте терминал и протестируйте приложение.

    python app.py
    

    Ниже приведены ожидаемые выходные данные.

    29485   1       Professional Sales and Service
    29531   1       Remarkable Bike Store
    29546   1       Bulk Discount Store
    29568   1       Coalition Bike Company
    29584   1       Futuristic Bikes
    

Вставить строку как транзакцию

Безопасно выполните инструкцию INSERT и передайте параметры. Передача параметров в качестве значений защищает приложение от атак внедрения SQL .

  1. Добавьте импорт randrange из библиотеки random в начало app.py.

    from random import randrange
    
  2. В конце app.py добавьте код для генерации случайного номера продукта.

    productNumber = randrange(1000)
    

    Подсказка

    Создание случайного номера продукта здесь гарантирует, что этот пример можно запустить несколько раз.

  3. Создайте строку инструкции SQL.

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP)
    """
    
  4. Выполните инструкцию с помощью cursor.execute.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Извлеките один результат с помощью cursor.fetchone, распечатайте уникальный идентификатор результата, а затем зафиксируйте операцию в виде транзакции с помощью connection.commit.

    result = cursor.fetchone()
    print(f"Inserted Product ID : {result.ProductID}")
    conn.commit()
    

    Подсказка

    При необходимости можно использовать connection.rollback для отката транзакции.

  6. Закройте курсор и подключение с помощью cursor.close и connection.close.

    cursor.close()
    conn.close()
    
  7. Сохранитеapp.py файл и снова протестируйте приложение.

    python app.py
    

    Ниже приведены ожидаемые выходные данные.

    Inserted Product ID : 1001
    

Дальнейшие действия

Используйте эти статьи, чтобы продолжать строить: