Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как подключить скрипт Python к базе данных, созданной и загруженной с примерами данных.
mssql-python Драйвер для Python используется для подключения к базе данных и выполнения основных операций, таких как чтение и запись данных.
Драйвер mssql-python не требует внешних зависимостей на компьютерах Windows. Драйвер устанавливает все, что требуется с одной pip установкой, что позволяет использовать самую последнюю версию драйвера в новых сценариях без нарушения работы других сценариев, для обновления и тестирования которых у вас нет времени.
Используйте пример локальной SQL-аутентификации в этой статье только для локальной разработки на инстансе SQL Server, которым вы управляете. При работе с База данных SQL Azure, базами данных SQL в Fabric, совместно используемыми средами разработки, CI и производственными развертываниями начните с аутентификации Microsoft Entra или другого бесспарольного метода аутентификации.
mssql-python документация | mssql-python исходный код | Пакет (PyPI) | Visual Studio Code
Предпосылки
Python 3.10 или более поздней версии
Если у вас еще нет Python, установите среду выполнения Python и диспетчер пакетов pip из python.org.
Не хотите использовать собственную среду? Следуйте инструкциям в разделе Контейнерная и локальная разработка, чтобы создать воспроизводимую среду разработки в devcontainer или GitHub Codespaces.
Создайте базу данных или подключитесь к существующей базе данных в SQL Server, База данных SQL Azure или в базе данных SQL в Fabric. Используйте следующие шаги, чтобы настроить базу данных с примерной схемой AdventureWorks2025, и сохраните строку подключения для дальнейшего использования.
Создание базы данных SQL
Создайте или подключитесь к SQL-базе данных на одной из следующих платформ:
Настройка
Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью mssql-python драйвера Python.
Замечание
Этот драйвер использует протокол Tabular Data Stream (TDS ). SQL Server, SQL Database in Fabric и База данных SQL Azure по умолчанию включают TDS, поэтому дополнительная настройка не требуется.
Установка пакета mssql-python
mssql-python Получите пакет из PyPI.
Откройте командную строку в пустом каталоге.
Установите пакет
mssql-python.pip install mssql-python
Установите пакет python-dotenv
Получите пакет python-dotenv из PyPI.
В том же каталоге установите
python-dotenvпакет.pip install python-dotenv
Проверка установленных пакетов
Средство командной строки PyPI можно использовать для проверки установки предполагаемых пакетов.
Проверьте список установленных пакетов с помощью
pip list.pip list
Запустите код
Создание нового файла
Создайте файл с именем
app.py.Добавьте строку документации для модуля.
""" Connects to a SQL database using mssql-python """Импорт пакетов, включая
mssql-python.from os import getenv from dotenv import load_dotenv from mssql_python import connectИспользуйте функцию
mssql-python.connectдля подключения к базе данных SQL.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))В текущем каталоге создайте новый файл с именем
.env.В файле
.envдобавьте запись для строки подключения с именемSQL_CONNECTION_STRING. Используйте один из следующих примеров и замените заполняющие значения на ваши реальные значения.Для База данных SQL Azure или SQL Database in Fabric начните с аутентификации Microsoft Entra:
SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Для локального SQL Server в процессе разработки начинайте с SQL-аутентификации:
SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"Предостережение
Воспринимайте
.envэто как удобство локальной разработки, а не как механизм развертывания. Никогда не коммитируйте его, никогда не используйте этот образец аутентификации SQL в общих или производственных средах, и поддерживайте включённую проверку сертификатов вне локальной разработки.Используйте строки соединения для адаптации сэмпла под именованные экземпляры, контейнеры или расширенные настройки. Если вы подключаетесь к База данных SQL Azure или SQL Database в Fabric, используйте аутентификацию Microsoft Entra для доступа без пароля и интерактивного входа. Для более широких рекомендаций по секретам и сертификатам см. лучшие практики безопасности.
Выполнение запроса
Используйте строку 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с цикломforдля получения всех записей из базы данных. Затем распечатайте записи.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Сохраните
app.pyфайл.Подсказка
На macOS, оба
ActiveDirectoryInteractiveиActiveDirectoryDefaultработают для проверки подлинности Microsoft Entra.ActiveDirectoryInteractiveзапрашивает вход при каждом запуске скрипта. Чтобы избежать повторных запросов при входе, войдите один раз через Azure CLI, запустивaz login, затем используйтеActiveDirectoryDefault, который повторно использует кэшированный учетный код.Откройте терминал и протестируйте приложение.
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 (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP) """Выполните инструкцию с помощью
cursor.execute.cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 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
Дальнейшие действия
Используйте эти статьи, чтобы продолжать строить:
- Строки подключения для адаптации примера к локальному SQL Server, Azure SQL, контейнерам и именованным экземплярам.
- Управление соединениями для использования контекстных менеджеров, пулов и настроек соединений.
- Диагностика проблем с аутентификацией, сертификатами и подключением.