Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как подключить скрипт 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
Установка пакета python-dotenv
Получите python-dotenv из PyPI.
В том же каталоге установите
python-dotenvпакет.pip install python-dotenv
Проверка установленных пакетов
Средство командной строки PyPI можно использовать для проверки установки предполагаемых пакетов.
Проверьте список установленных пакетов с помощью
pip list.pip list
Создание базы данных SQL
В этом кратком руководстве требуется облегченная схема AdventureWorks2022 в Microsoft SQL Server, в базе данных SQL в среде Fabric или в Базе данных SQL Azure.
Создание базы данных SQL в минутах с помощью портала Azure
ODBC Скопируйте строку подключения из вкладки Строки подключения.
Запустите код
Создание нового файла
Создайте файл с именем
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 Azure или базе данных SQL в Fabric, используйте строку подключения ODBC на вкладке строк подключения. Возможно, вам потребуется настроить тип проверки подлинности в зависимости от вашего сценария. Дополнительные сведения о строках подключения и их синтаксисе см. в справочнике по синтаксису строки подключения.
Выполнение запроса
Используйте строку 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, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.