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


Быстрый запуск: Подключение с использованием драйвера pymssql для Python

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

Документация по pymssql | Исходный код pymssql | Пакет (PyPi)

Предпосылки

  • Python 3

  • pymssql пакет из PyPI.

  • База данных в базе данных SQL Server, базе данных Azure SQL или базе данных SQL в Fabric с примерной схемой AdventureWorks2022 и допустимой строкой подключения.

Настройка

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

Замечание

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

Установка пакета pymssql

pymssql Получите пакет из PyPI.

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

  2. Установите пакет pymssql.

    pip install pymssql
    

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

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

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

    pip list
    

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

В этом кратком руководстве требуется облегченная схема AdventureWorks2022 на Microsoft SQL Server, базе данных SQL в Fabric или базе данных Azure SQL.

Запустите код

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

  1. Создайте файл с именем app.py.

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

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

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

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

  6. В файле *.env добавьте записи для значений строки подключения с именами SQL_SERVER, SQL_USER, SQL_PASSWORD, SQL_DATABASE. Замените заполнители здесь фактическими значениями строки подключения.

    SQL_SERVER="<server_name>"
    SQL_USER="<sql_user_name>"
    SQL_PASSWORD="<sql_user_password>"
    SQL_DATABASE="<sql_database>"
    

    Подсказка

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

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

Используйте строку 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(as_dict=True)
    cursor.execute(SQL_QUERY)
    

    Замечание

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

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

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

  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 (%s, %s, %s, %s, CURRENT_TIMESTAMP)
    """
    
  4. Выполните инструкцию с помощью cursor.execute.

    cursor.execute(
        SQL_STATEMENT,
        (
            f'Example Product {productNumber}',
            f'EXAMPLE-{productNumber}',
            100,
            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
    

Следующий шаг

Посетите репозиторий pymssql драйверов GitHub, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.