Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом кратком руководстве вы будете использовать uv для управления зависимостями проекта и средами для скрипта Python, который подключается к созданной и загруженной базе данных с образцами данных.
mssql-python Драйвер для Python используется для подключения к базе данных и выполнения основных операций, таких как чтение и запись данных.
Драйвер mssql-python не требует внешних зависимостей на компьютерах Windows. Драйвер устанавливает все, что требуется с одной pip установкой, что позволяет использовать самую последнюю версию драйвера в новых сценариях без нарушения работы других сценариев, для обновления и тестирования которых у вас нет времени.
Документация mssql-python | , исходный код mssql-python | , пакет (PyPi) | , uv
Предпосылки
Python 3
Если у вас ещё нет Python, установите Python runtime и диспетчер пакетов Python Package Index (PyPI) с python.org.
Предпочитаете не использовать собственную среду? Откройте в качестве devcontainer с помощью GitHub Codespaces.
Visual Studio Code со следующими расширениями:
Если у вас еще нет
uv, установитеuv, следуя инструкциям из https://docs.astral.sh/uv/getting-started/installation/.База данных на SQL Server, Azure SQL Database или базе данных SQL в Fabric с примерной схемой
AdventureWorks2025и допустимой строкой подключения.Установите единовременные предварительные условия для операционной системы.
apk add libtool krb5-libs krb5-dev
Создание базы данных SQL
Для этого краткого руководства требуется упрощенная схема AdventureWorks2025 в Microsoft SQL Server, базе данных SQL в Fabric или Базе данных SQL Azure.
Создание проекта и запуск кода
- Создание проекта
- Добавление зависимостей
- Запуск Visual Studio Code
- Обновление pyproject.toml
- Обновление main.py
- Сохранение строки подключения
- Использование uv run для выполнения скрипта
Создание нового проекта
Откройте командную строку в каталоге разработки. Если у вас нет одного, создайте новый каталог с именем
python,scriptsи т. д. Избегайте папок в OneDrive, синхронизация может препятствовать управлению виртуальной средой.Создайте новый проект с
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Добавление зависимостей
В том же каталоге установите mssql-pythonи python-dotenvrich пакеты.
uv add mssql-python python-dotenv rich
Запустите Visual Studio Code.
В том же каталоге выполните следующую команду.
code .
Обновление pyproject.toml
Pyproject.toml содержит метаданные проекта. Откройте файл в избранном редакторе.
Просмотрите содержимое файла. Он должен быть похож на этот пример. Обратите внимание на версию Python и зависимость:
mssql-pythonиспользует>=для определения минимальной версии. Если вы предпочитаете точную версию, измените>=на==перед номером версии. Затем разрешенные версии каждого пакета хранятся в uv.lock. Lockfile гарантирует, что разработчики, работающие над проектом, используют согласованные версии пакетов. Он также гарантирует, что при распространении пакета пользователям используется тот же набор версий пакетов. Не следует изменятьuv.lockфайл.[project] name = "mssql-python-repeatable-qs" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = [ "mssql-python>=0.10.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Обновите описание, чтобы быть более описательным.
description = "Connects to a SQL database using mssql-python"Сохраните и закройте файл.
Обновление main.py
Откройте файл с именем
main.py. Он должен быть похож на этот пример.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()В верхней части файла добавьте следующие импорты над строкой
def main().Подсказка
Если в Visual Studio Code возникли проблемы с разрешением пакетов, необходимо обновить интерпретатор для использования виртуальной среды.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection, Cursor from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table from argparse import ArgumentParser from time import sleepМежду импортом и строкой с
def main(), добавьте следующий код.def get_results(sleep_time: int = 0) -> None: with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), transient=True, ) as progress: task = progress.add_task( description="Connecting to SQL...") cursor = query_sql() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.update(task, description="Formatting results...") table = Table(title="Orders by Customer") # https://rich.readthedocs.io/en/stable/appendix/colors.html table.add_column("Customer ID", style="bright_blue", justify="center") table.add_column("Company Name", style="bright_white", justify="left") table.add_column("Order Count", style="bold green", justify="right") records = cursor.fetchall() for r in records: table.add_row(f"{r.CustomerID}", f"{r.CompanyName}", f"{r.OrderCount}") if cursor: cursor.close() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.stop() Console().print(table)Между импортом и
def get_results(sleep_time: int = 0) -> None:добавьте этот код._connection = None def get_connection() -> Connection: global _connection if not _connection: load_dotenv() _connection = connect(getenv("SQL_CONNECTION_STRING")) # type: ignore return _connection def query_sql() -> Cursor: 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; """ conn = get_connection() cursor = conn.cursor() cursor.execute(SQL_QUERY) return cursorНайдите этот код.
def main(): print("Hello from test!")Замените его этим кодом.
def main() -> None: parser = ArgumentParser() parser.add_argument("--sleep-time", type=int, default=0, help="Time to sleep in seconds to simulate slow connection") args = parser.parse_args() if args.sleep_time > 0: get_results(args.sleep_time) else: get_results() if _connection: _connection.close()Сохраните и закройте
main.py.
Сохранение строки подключения
.gitignoreОткройте файл и добавьте исключение для.envфайлов. Файл должен быть похож на этот пример. Не забудьте сохранить и закрыть его после завершения.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envВ текущем каталоге создайте новый файл с именем
.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 на вкладке строк подключения. Возможно, вам потребуется настроить тип проверки подлинности в зависимости от вашего сценария. Дополнительные сведения о строках подключения и их синтаксисе см. в справочнике по синтаксису строки подключения.
Использование uv run для выполнения скрипта
Подсказка
Чтобы использовать проверку подлинности Microsoft Entra в macOS, необходимо войти в систему с помощью расширения Azure Repos в Visual Studio Code или запустив az login через интерфейс командной строки Azure (CLI).
В окне терминала до или в новом окне терминала, открываемом в том же каталоге, выполните следующую команду.
uv run main.pyТеперь давайте снова запустите его, но более медленно, чтобы иметь возможность видеть оба обновления состояния.
uv run main.py --sleep-time 5Ниже приведены ожидаемые выходные данные при завершении скрипта.
Orders by Customer ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Customer ID ┃ Company Name ┃ Order Count ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ 29485 │ Professional Sales and Service │ 1 │ │ 29531 │ Remarkable Bike Store │ 1 │ │ 29546 │ Bulk Discount Store │ 1 │ │ 29568 │ Coalition Bike Company │ 1 │ │ 29584 │ Futuristic Bikes │ 1 │ └─────────────┴────────────────────────────────┴─────────────┘Чтобы развернуть скрипт на другом компьютере, скопируйте все файлы, кроме
.venvпапки на другой компьютер. Виртуальная среда повторно создается при первом запуске.
Следующий шаг
Посетите репозиторий mssql-python драйверов GitHub, чтобы получить дополнительные примеры, чтобы внести идеи или сообщить о проблемах.