Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве описано, как подключить скрипт Python к базе данных, созданной и загруженной с примерами данных.
mssql-python Драйвер для Python используется для подключения к базе данных и выполнения основных операций, таких как чтение и запись данных.
Драйвер mssql-python не требует внешних зависимостей на компьютерах Windows. Драйвер устанавливает все, что требуется с одной pip установкой, что позволяет использовать самую последнюю версию драйвера в новых сценариях без нарушения работы других сценариев, для обновления и тестирования которых у вас нет времени.
Документация по mssql-python | Пакет (PyPi) | Visual Studio Code
Предпосылки
Python 3
Если у вас еще нет Python, установите среду выполнения Python и менеджер пакетов Python Package Index (PyPI) из python.org.
Предпочитаете обходиться без использования собственной среды? Откройте в качестве контейнера для разработки с помощью GitHub Codespaces.
База данных в SQL Server, Базе данных SQL Azure или базе данных SQL в Fabric с примером
AdventureWorks2025схемы и допустимой строкой подключения.
Настройка
Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью mssql-python драйвера Python.
Замечание
Этот драйвер использует протокол табличного потока данных (TDS ), который включен по умолчанию в SQL Server, базе данных SQL в Fabric и Базе данных SQL Azure. Дополнительная конфигурация не требуется.
Установка пакета 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
Создание базы данных SQL
Для этого быстрого старта требуется упрощенная схема AdventureWorks2025 в Microsoft SQL Server, базе данных Fabric SQL или базе данных Azure SQL.
Запустите код
Создание нового файла
Создайте файл с именем
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_CONNECTION_STRING="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файл.
Подсказка
Чтобы использовать проверку подлинности Microsoft Entra в macOS, необходимо войти с az login помощью интерфейса командной строки Azure.
Откройте терминал и протестируйте приложение.
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.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
Следующий шаг
Посетите репозиторий mssql-python драйверов GitHub, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.