Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía rápida, utilizará uv para administrar las dependencias y entornos del proyecto para un script de Python que se conecta a una base de datos que usted ha creado y cargado con datos de ejemplo. Use el mssql-python controlador para Python para conectarse a la base de datos y realizar operaciones básicas, como leer y escribir datos.
El mssql-python controlador no requiere ninguna dependencia externa en máquinas Windows. El controlador instala todo lo que necesita con una sola pip instalación, lo que le permite usar la versión más reciente del controlador para nuevos scripts sin interrumpir otros scripts que no tenga tiempo para actualizar y probar.
Documentación | Código | Paquete (PyPi) | uv
Prerrequisitos
Python 3
Si aún no tiene Python, instale el administrador de paquetes de Python runtime e Índice de paquetes de Python (PyPI) desde python.org.
¿Prefiere no usar su propio entorno? Abra como un devcontainer mediante GitHub Codespaces.
Visual Studio Code con las siguientes extensiones:
Si aún no tiene
uv, instaleuvsiguiendo las instrucciones de https://docs.astral.sh/uv/getting-started/installation/.Una base de datos en SQL Server, Azure SQL Database o SQL Database en Fabric con el
AdventureWorks2025esquema de ejemplo y una cadena de conexión válida.Instale requisitos previos específicos del sistema operativo de un solo uso.
Creación de una base de datos SQL
Para este inicio rápido se requiere el esquema AdventureWorks2025 Lightweight en Microsoft SQL Server, la base de datos SQL en Fabric o Azure SQL Database.
Creación del proyecto y ejecución del código
- Creación de un nuevo proyecto
- Agregar dependencias
- Inicio de Visual Studio Code
- Actualizar pyproject.toml
- Actualizar main.py
- Guardar la cadena de conexión
- Usa uv run para ejecutar el script
Creación de un nuevo proyecto
Abra una ventana del terminal en el directorio de desarrollo. Si no tiene uno, cree un directorio denominado
python,scripts, etc. Evite carpetas en OneDrive, la sincronización puede interferir con la administración del entorno virtual.Cree un proyecto con
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Agregar dependencias
En el mismo directorio, instale los mssql-pythonpaquetes , python-dotenvy rich .
uv add mssql-python python-dotenv rich
Iniciar Visual Studio Code
En el mismo directorio, ejecute el siguiente comando.
code .
Actualizar pyproject.toml
Pyproject.toml contiene los metadatos del proyecto. Abra el archivo en su editor favorito.
Revise el contenido del archivo. Debe ser similar a este ejemplo. Tenga en cuenta la versión de Python y la dependencia para que
mssql-pythonuse>=para definir una versión mínima. Si prefiere una versión exacta, cambie el>=valor anterior al número de versión a==. Las versiones resueltas de cada paquete se almacenan en uv.lock. El archivo de bloqueo garantiza que los desarrolladores que trabajan en el proyecto usen versiones de paquetes coherentes. También garantiza que se use el mismo conjunto exacto de versiones de paquete al distribuir el paquete a los usuarios finales. No debe editar eluv.lockarchivo.[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", ]Actualice la descripción para que sea más descriptivo.
description = "Connects to a SQL database using mssql-python"Guarde y cierre el archivo.
Actualizar main.py
Abra el archivo denominado
main.py. Debe ser similar a este ejemplo.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()En la parte superior del archivo, agregue las siguientes importaciones encima de la línea con
def main().Sugerencia
Si Visual Studio Code tiene problemas para resolver los paquetes, debe actualizar el intérprete para usar el entorno virtual.
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 sleepEntre las importaciones y la línea con
def main(), agregue el código siguiente.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)Entre las importaciones y
def get_results(sleep_time: int = 0) -> None:, agregue este código._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 cursorBusque este código.
def main(): print("Hello from test!")Reemplácelo por este código.
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()Guarde y cierre
main.py.
Guardar la cadena de conexión
Abra el
.gitignorearchivo y agregue una exclusión para.envlos archivos. El archivo debe ser similar a este ejemplo. Asegúrese de guardarlo y cerrarlo cuando haya terminado.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envEn el directorio actual, cree un nuevo archivo denominado
.env.En el
.envarchivo, agregue una entrada para la cadena de conexión denominadaSQL_CONNECTION_STRING. Reemplace el ejemplo aquí por el valor real de la cadena de conexión.SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Sugerencia
La cadena de conexión que se usa aquí depende en gran medida del tipo de base de datos SQL a la que se conecta. Si se conecta a una base de datos de Azure SQL o a una base de datos SQL en Fabric, use la cadena de conexión ODBC de la pestaña Cadenas de conexión. Es posible que tenga que ajustar el tipo de autenticación en función de su escenario. Para obtener más información sobre las cadenas de conexión y su sintaxis, consulte referencia de sintaxis de cadena de conexión.
Usa uv run para ejecutar el script
Sugerencia
Para usar la autenticación de Microsoft Entra en macOS, debe iniciar sesión a través de la extensión de Azure Repos en Visual Studio Code o mediante la ejecución az login a través de la interfaz de Azure Command-Line (CLI).
En la ventana de terminal desde antes o una nueva ventana de terminal abierta en el mismo directorio, ejecute el siguiente comando.
uv run main.pyAhora vamos a ejecutarlo de nuevo, pero más lentamente para poder ver ambas actualizaciones de estado.
uv run main.py --sleep-time 5Esta es la salida esperada cuando se completa el script.
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 │ └─────────────┴────────────────────────────────┴─────────────┘Para implementar el script en otra máquina, copie todos los archivos excepto la
.venvcarpeta en la otra máquina. El entorno virtual se vuelve a crear con la primera ejecución.
Paso siguiente
Visite el repositorio de mssql-python GitHub del controlador para obtener más ejemplos, para contribuir a ideas o notificar problemas.