Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве описано, как подключить скрипт 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 с примерной схемой
AdventureWorks2025и допустимой строкой подключения.
Настройка
Выполните следующие действия, чтобы настроить среду разработки для разработки приложения с помощью pymssql драйвера Python.
Замечание
Этот драйвер использует протокол табличного потока данных (TDS ), который включен по умолчанию в SQL Server, базе данных SQL в Fabric и Базе данных SQL Azure. Дополнительная конфигурация не требуется.
Установка пакета pymssql
pymssql Получите пакет из PyPI.
Откройте командную строку в пустом каталоге.
Установите пакет
pymssql.pip install pymssql
Установка пакета 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 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, к которой вы подключаетесь. Дополнительные сведения о строках подключения и их синтаксисе см. в разделе Атрибуты подключения FreeTDS.
Выполнение запроса
Используйте строку 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, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.