Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как подключить скрипт Python к созданной и загруженной базе данных с примерами данных.
pyodbc
Драйвер для Python используется для подключения к базе данных и выполнения основных операций, таких как чтение и запись данных.
Документация по pyodbc | Исходный код | Пакет (PyPi) pyodbc
Предпосылки
Python 3
Если у вас еще нет Python, установите среду выполнения Python и менеджер пакетов Python Package Index (PyPI) из python.org.
Предпочитаете обходиться без использования собственной среды? Откройте в качестве контейнера для разработки с помощью GitHub Codespaces.
pyodbc
пакет от PyPI.База данных в SQL Server, Базе данных SQL Azure или базе данных SQL в Fabric с примером
AdventureWorks2022
схемы и допустимой строкой подключения.
Настройка
Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью pyodbc
драйвера Python.
Замечание
Этот драйвер использует протокол TDS , который включен по умолчанию в SQL Server, базе данных SQL в Fabric и Базе данных SQL Azure. Дополнительная конфигурация не требуется.
Установка пакета pyodbc
pyodbc
Получите пакет из PyPI.
Откройте командную строку в пустом каталоге.
Установите пакет
pyodbc
.pip install pyodbc
Проверка установленных пакетов
Средство командной строки PyPI можно использовать для проверки установки предполагаемых пакетов.
Проверьте список установленных пакетов с помощью
pip list
.pip list
Создание базы данных SQL
В этом кратком руководстве требуется облегченная схема AdventureWorks2022 в Microsoft SQL Server, в базе данных SQL в среде Fabric или в Базе данных SQL Azure.
Запустите код
Создание нового файла
Создайте файл с именем
app.py
.Добавьте строку документации для модуля.
""" Connects to a SQL database using pyodbc """
Импортируйте пакет
pyodbc
.from os import getenv from dotenv import load_dotenv from pyodbc import connect
Используйте функцию
pyodbc.connect
для подключения к базе данных SQL.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))
В текущем каталоге создайте новый файл с именем
*.env
.В файле
*.env
добавьте запись для строки подключения с именемSQL_CONNECTION_STRING
. Замените пример фактическим значением строки подключения.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
Подсказка
Строка подключения, используемая здесь, в значительной степени зависит от типа базы данных 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() cursor.execute(SQL_QUERY)
Замечание
Эта функция по сути принимает любой запрос и возвращает результирующий набор, который можно переитерировать с помощью cursor.fetchone().
Используйте
cursor.fetchall
с цикломforeach
для получения всех записей из базы данных. Затем распечатайте записи.records = cursor.fetchall() for r in records: 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 (?, ?, ?, ?, CURRENT_TIMESTAMP) """
Выполните инструкцию с помощью
cursor.execute
.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )
Извлеките первый столбец одного результата с помощью
cursor.fetchval
, выведите уникальный идентификатор, а затем зафиксируйте операцию как транзакцию с помощьюconnection.commit
.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()
Подсказка
При необходимости можно использовать
connection.rollback
для отката транзакции.Закройте курсор и подключение с помощью
cursor.close
иconnection.close
.cursor.close() conn.close()
Сохраните
app.py
файл и снова протестируйте приложение.python app.py
Ниже приведены ожидаемые выходные данные.
Inserted Product ID : 1001
Следующий шаг
Посетите репозиторий pyodbc
драйверов GitHub, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.