Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как подключить скрипт Python к созданной и загруженной базе данных с примерами данных.
pymssql
Драйвер для Python используется для подключения к базе данных и выполнения основных операций, таких как чтение и запись данных.
Документация по pymssql | Исходный код pymssql | Пакет (PyPi)
Предпосылки
Python 3
Если у вас еще нет Python, установите Python runtime и диспетчер пакетов Python Package Index (PyPI) с python.org.
Предпочитаете не использовать собственную среду? Откройте в качестве devcontainer с помощью GitHub Codespaces.
pymssql
пакет из PyPI.База данных в базе данных SQL Server, базе данных Azure SQL или базе данных SQL в Fabric с примерной схемой
AdventureWorks2022
и допустимой строкой подключения.
Настройка
Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью pymssql
драйвера Python.
Замечание
Этот драйвер использует протокол TDS , который включен по умолчанию в SQL Server, базе данных SQL в Fabric и Базе данных SQL Azure. Дополнительная конфигурация не требуется.
Установка пакета pymssql
pymssql
Получите пакет из PyPI.
Откройте командную строку в пустом каталоге.
Установите пакет
pymssql
.pip install pymssql
Проверка установленных пакетов
Средство командной строки PyPI можно использовать для проверки установки предполагаемых пакетов.
Проверьте список установленных пакетов при помощи
pip list
.pip list
Создание базы данных SQL
В этом кратком руководстве требуется облегченная схема AdventureWorks2022 на Microsoft SQL Server, базе данных SQL в Fabric или базе данных Azure SQL.
Запустите код
Создание нового файла
Создайте файл с именем
app.py
.Добавьте строку документации для модуля.
""" Connects to a SQL database using pymssql """
Импорт пакетов, включая
pymssql
.from os import getenv from dotenv import load_dotenv from pymssql import connect
Используйте функцию
pymssql.connect
для подключения к базе данных SQL.load_dotenv() conn = connect(getenv("SQL_SERVER"),getenv("SQL_USER"),getenv("SQL_PASSWORD"),getenv("SQL_DATABASE"))
В текущем каталоге создайте новый файл с именем
*.env
.В файле
*.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-запроса для выполнения запроса и анализа результатов.
Создайте переменную для строки запроса 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; """
Используется
cursor.execute
для извлечения результирующих наборов из запроса к базе данных.cursor = conn.cursor(as_dict=True) cursor.execute(SQL_QUERY)
Замечание
Эта функция по сути принимает любой запрос и возвращает результирующий набор, который можно переитерировать с помощью cursor.fetchone().
Используйте цикл
foreach
, чтобы получить все записи из базы данных. Затем распечатайте записи.for r in cursor: print(f"{r['CustomerID']}\t{r['OrderCount']}\t{r['CompanyName']}")
Сохраните
app.py
файл.Откройте терминал и протестируйте приложение.
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 .
Добавьте импорт
randrange
из библиотекиrandom
в началоapp.py
.from random import randrange
В конце
app.py
добавьте код для генерации случайного номера продукта.productNumber = randrange(1000)
Подсказка
Создание случайного номера продукта здесь гарантирует, что этот пример можно запустить несколько раз.
Создайте строку инструкции SQL.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (%s, %s, %s, %s, CURRENT_TIMESTAMP) """
Выполните инструкцию с помощью
cursor.execute
.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )
Извлеките один результат с помощью
cursor.fetchone
, распечатайте уникальный идентификатор результата, а затем зафиксируйте операцию в виде транзакции с помощьюconnection.commit
.result = cursor.fetchone() print(f"Inserted Product ID : {result['ProductID']}") conn.commit()
Подсказка
При необходимости можно использовать
connection.rollback
для отката транзакции.Закройте курсор и подключение с помощью
cursor.close
иconnection.close
.cursor.close() conn.close()
Сохраните
app.py
файл и снова протестируйте приложение.python app.py
Ниже приведены ожидаемые выходные данные.
Inserted Product ID : 1001
Следующий шаг
Посетите репозиторий pymssql
драйверов GitHub, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.