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


Быстрый запуск: Подключение с использованием драйвера 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
    

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

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

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

    pip install python-dotenv
    

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

Средство командной строки 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, к которой вы подключаетесь. Дополнительные сведения о строках подключения и их синтаксисе см. в разделе Атрибуты подключения FreeTDS.

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

Используйте строку 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, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.