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.
El controlador mssql-python soporta las siguientes palabras clave de cadena de conexión al conectarse a SQL Server, Azure SQL Database, Azure SQL Managed Instance y base de datos SQL en Microsoft Fabric.
Sintaxis de cadenas de conexión
Las cadenas de conexión utilizan pares clave-valor separados por punto y coma:
keyword1=value1;keyword2=value2;...
Valores de envolvente que contienen caracteres especiales (puntos y coma, signos iguales o clavijas curvadas) entre clavijas curvadas:
PWD={my;complex=password}
Para incluir un soporte literal de cierre en un valor, utiliza dos clavijas de cierre (}}):
PWD={password}}with}}brace}
Ejemplos básicos de conexión
Los siguientes ejemplos muestran cómo conectarse usando diferentes métodos de autenticación. Para aplicaciones de producción, utiliza la autenticación Microsoft Entra siempre que sea posible. Elimina las contraseñas de tu código y de las cadenas de conexión.
SQL Server con autenticación Microsoft Entra (recomendado)
Este ejemplo utiliza ActiveDirectoryDefault, que prueba múltiples fuentes de credenciales (CLI de Azure, variables de entorno, identidad gestionada) en orden. No se almacena ninguna contraseña en el código:
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Authentication=ActiveDirectoryDefault;Encrypt=yes;"
)
SQL Server con autenticación SQL
Usa autenticación SQL solo para desarrollo local en una instancia de SQL Server que controles. Las credenciales están incrustadas en la cadena de conexión, así que mantenlas en variables de entorno o en un .env archivo en lugar de en código fuente:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"UID=<login>;"
"PWD=<password>;"
"Encrypt=yes;"
)
Azure SQL con autenticación Microsoft Entra
La cadena de conexión para Azure SQL Database es la misma que para SQL Server.
ActiveDirectoryDefaultfunciona en entornos de desarrollo local, contenedores y alojados en Azure sin cambios en el código:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Usar argumentos por palabras clave
Puedes pasar parámetros de conexión como argumentos de palabra clave en lugar de o además de una cadena de conexión. Los argumentos de palabras clave evitan los errores escapatorios del ensamblaje de cadena de conexión. Las contraseñas con caracteres especiales como @, ;, {, o } que no necesitan envolvimiento con llaves rizados cuando se pasan como argumentos de palabra clave:
conn = mssql_python.connect(
server="<server>.database.windows.net",
database="<database>",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Compárese con cadena de conexión assembly, donde debe envolverse una contraseña que contenga @ a:
# Connection string requires escaping
conn = mssql_python.connect("Server=srv;UID=user;PWD={p@ss;word};")
# Keyword arguments - no escaping needed
conn = mssql_python.connect(server="srv", uid="user", pwd="p@ss;word")
El controlador fusiona los argumentos de palabras clave en la cadena de conexión tras la normalización. Si un argumento de palabra clave coincide con un parámetro ya presente en la cadena de conexión, el argumento de palabra clave tiene prioridad y anula el valor de la cadena de conexión:
# The keyword argument database="production" overrides Database=dev in the connection string
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Encrypt=yes;",
database="production",
authentication="ActiveDirectoryDefault"
)
# Connects to "production", not "dev"
El siguiente ejemplo combina una cadena de conexión con argumentos de palabras clave:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Palabras clave de cadena de conexión
Servidor y base de datos
Especifica la instancia y base de datos de SQL Server objetivo para la conexión.
| Keyword | Alias | Default | Descripción |
|---|---|---|---|
Server |
addr, address |
None | Nombre de host, dirección IP o instancia de SQL Server. Para instancias nombradas, usa server\instance. Para Azure SQL, usa server.database.windows.net. Para especificar un puerto, use server,port. |
Database |
None | None | Nombre de la base de datos al que conectarse. |
Autenticación
Proporciona credenciales para la autenticación SQL o especifica un modo de autenticación Microsoft Entra. Para opciones sin contraseña, véase modos de autenticación Microsoft Entra.
| Keyword | Alias | Default | Descripción |
|---|---|---|---|
UID |
uid |
None | Nombre de usuario para autenticación SQL. |
PWD |
pwd |
None | Contraseña para autenticación SQL. |
Trusted_Connection |
trusted_connection |
no |
Utiliza la autenticación integrada de Windows. Establézcalo en yes para habilitar. |
Authentication |
authentication |
None | Modo de autenticación Microsoft Entra. Consulte Autenticación de Microsoft Entra. |
Cifrado y seguridad
Todas las conexiones se usan Encrypt=yes por defecto. Para la mayoría de las aplicaciones, el valor por defecto es suficiente. Úsalo strict solo cuando tu instancia de SQL Server soporte TDS 8.0 y necesites TLS 1.3. Úsalo TrustServerCertificate=yes solo en entornos de desarrollo con certificados autofirmados.
| Keyword | Alias | Default | Descripción |
|---|---|---|---|
Encrypt |
encrypt |
yes |
Habilite el cifrado TLS. Valores: yes, no, strict. Úsalo strict para TDS 8.0 con TLS 1.3 obligatorio. |
TrustServerCertificate |
trust_server_certificate, trustservercertificate |
no |
Confía en los certificados de servidor autofirmados sin validación. Configurado como yes solo para desarrollo. |
HostnameInCertificate |
hostnameincertificate |
None | Nombre de host esperado en el certificado TLS del servidor. |
ServerCertificate |
servercertificate |
None | Ruta hacia un archivo PEM que contiene la autoridad certificadora de confianza. |
ServerSPN |
serverspn |
None | Nombre principal del servicio del servidor para la autenticación de Kerberos. |
Alta disponibilidad y conmutación por error
Estas palabras clave se aplican a los despliegues de grupos de disponibilidad Always On. Configura ApplicationIntent=ReadOnly para enrutar cargas de trabajo con mucha lectura (informes, analítica) a réplicas secundarias, reduciendo la carga en el principal. Establece MultiSubnetFailover=yes cuándo tu grupo de disponibilidad abarca varias subredes.
| Keyword | Alias | Default | Descripción |
|---|---|---|---|
MultiSubnetFailover |
multisubnetfailover |
no |
Habilitar la conmutación por error multi-subred para los grupos de disponibilidad Always On. |
ApplicationIntent |
applicationintent |
ReadWrite |
Declara el tipo de carga de trabajo de la aplicación. Úsalo ReadOnly para enrutamiento de solo lectura a réplicas secundarias. |
ConnectRetryCount |
connectretrycount |
1 |
Número de intentos de reconexión automática para la resiliencia de la conexión en reposo. Esta es una función a nivel de controlador para conexiones caídas en reposo, no un sustituto de la lógica de reintentos a nivel de aplicación. |
ConnectRetryInterval |
connectretryinterval |
10 |
Segundos entre intentos de reconexión de resiliencia de conexión en reposo. |
Rendimiento y red
Los valores por defecto funcionan para la mayoría de las aplicaciones. Aumenta PacketSize (hasta 32767) para transferencias masivas de datos. Configura KeepAlive si las conexiones cruzan cortafuegos o balanceadores de carga que abandonan las sesiones TCP inactivas.
| Keyword | Alias | Default | Descripción |
|---|---|---|---|
PacketSize |
packet size, packetsize |
4096 |
Tamaño del paquete de red en bytes (512–32767). |
KeepAlive |
keepalive |
None | Intervalo TCP de mantener vivo en segundos. |
KeepAliveInterval |
keepaliveinterval |
None | Intervalo de reintento TCP para mantener vivo en segundos. |
IpAddressPreference |
ipaddresspreference |
None | Preferencia de familia de direcciones IP: IPv4First, IPv6First, UsePlatformDefault. |
Palabras clave reservadas
| Keyword | Descripción |
|---|---|
Driver |
Reservado para uso interno. El conductor gestiona este valor automáticamente. |
APP |
Reservado. Siempre configurado "MSSQL-Python" por el conductor. |
Modos de autenticación de Microsoft Entra
La Authentication palabra clave soporta los siguientes valores. Elige el modo que se adapte a tu despliegue:
| Valor | Descripción | Cuándo se deben usar |
|---|---|---|
ActiveDirectoryDefault |
Usos DefaultAzureCredential desde el SDK de identidad de Azure. Prueba varios métodos de autenticación en secuencia. |
Desarrollo local en CLI de Azure, Azure PowerShell y Azure Developer CLI. Para producción, utiliza un modo específico (ActiveDirectoryMSI, ActiveDirectoryServicePrincipal) para evitar la lentitud de la cadena de credenciales. |
ActiveDirectoryInteractive |
Inicio de sesión interactivo basado en navegador. En Windows, delega nativamente al controlador ODBC. | Desarrollo local y herramientas donde un usuario esté presente para autenticarse en un navegador. |
ActiveDirectoryDeviceCode |
Flujo de código de dispositivo para entornos sin interfaz gráfica. Muestra un código para introducir en https://microsoft.com/devicelogin. |
Sesiones SSH, contenedores Docker u otros entornos sin navegador. |
ActiveDirectoryPassword |
Deprecated. Autenticación por nombre de usuario y contraseña con Microsoft Entra ID. Requiere UID y PWD. Utiliza el flujo ROPC, que es incompatible con MFA. |
No se recomienda. Use ActiveDirectoryMSI o ActiveDirectoryServicePrincipal en su lugar. |
ActiveDirectoryMSI |
Managed Service Identity para aplicaciones alojadas en Azure. | Azure VMs, App Service o Azure Functions donde la identidad gestionada está configurada. No se necesitan credenciales. |
ActiveDirectoryServicePrincipal |
Autenticación del principal de servicio. Requiere UID (ID del cliente) y PWD (secreto del cliente). |
Canalizaciones CI/CD y servicios en segundo plano que usan una identidad de aplicación registrada. |
ActiveDirectoryIntegrated |
Autenticación integrada de Windows con Microsoft Entra ID (Kerberos). | Máquinas Windows unidas a dominio en entornos empresariales con Kerberos configurado. |
Para la configuración reproducible de Docker, devcontainer y entorno CI, véase Contenedores y desarrollo local. Ese artículo centraliza la selección de tiempo de ejecución en Python y muestra cómo usar imágenes fijadas en resumen en entornos compartidos.
Ejemplo: DefaultAzureCredential
ActiveDirectoryDefaultse asigna a la cadena de identidad DefaultAzureCredential de Azure. Prueba primero el token CLI de Azure durante el desarrollo local, y luego la identidad gestionada cuando se despliega en Azure:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Ejemplo: Flujo de código de dispositivo
Utiliza el flujo de código del dispositivo cuando se ejecuta en entornos sin navegador, como sesiones SSH o contenedores Docker. El controlador muestra una URL y un código para introducir en un dispositivo separado:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDeviceCode;"
"Encrypt=yes;"
)
# Follow the prompt to authenticate at https://microsoft.com/devicelogin
Ejemplo: Principal de servicio
La autenticación del principal de servicio utiliza una identidad de aplicación registrada con un ID de cliente y un secreto. Utiliza este enfoque para canalizaciones CI/CD y servicios en segundo plano que se ejecutan sin interacción del usuario:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes;"
)
Para registrar la aplicación y concederle acceso a la base de datos, consulte Microsoft Entra service principals with Azure SQL. Para la configuración completa en mssql-python, véase autenticación del principal de servicio.
Tiempo de espera de conexión
Establece el tiempo de espera de la conexión usando el timeout parámetro. Utiliza un tiempo de espera para evitar que tu aplicación se quede colgada indefinidamente cuando el servidor no sea accesible:
# 30-second connection timeout
conn = mssql_python.connect(connection_string, timeout=30)
También puedes cambiar el tiempo de espera en una conexión existente:
conn.timeout = 60
Modo de confirmación automática
Por defecto, autocommit es False, lo que requiere llamadas explícitas commit() . Activa el autocommit para sentencias DDL o consultas de solo lectura que no necesiten control de transacciones:
# Via parameter
conn = mssql_python.connect(connection_string, autocommit=True)
# Or after connection
conn.setautocommit(True)
Atributos de conexión
Establezca los atributos de la conexión ODBC antes de que se establezca la conexión usando attrs_before:
import mssql_python
conn = mssql_python.connect(
connection_string,
attrs_before={
mssql_python.SQL_ATTR_LOGIN_TIMEOUT: 30,
mssql_python.SQL_ATTR_CONNECTION_TIMEOUT: 60,
}
)
Construcción programática de cadena de conexión
Para evitar la inyección de cadena de conexión, no uses concatenación de cadenas ni cadenas f con entrada del usuario. Utiliza argumentos de palabras clave o variables de entorno en su lugar. Para más patrones de construcción incluyendo archivos de configuración JSON/YAML, Azure Key Vault y una clase builder, consulta Build connection strings programáticamente.
import os
conn = mssql_python.connect(
server=os.environ["DB_SERVER"],
database=os.environ["DB_NAME"],
authentication=os.environ.get("DB_AUTH", "ActiveDirectoryDefault"),
encrypt="yes"
)
Validación de cadenas de conexión
El controlador valida cadenas de conexión y aumenta ConnectionStringParseError las señales para palabras clave desconocidas o mal escritas:
try:
conn = mssql_python.connect("Servr=localhost;") # Typo
except mssql_python.ConnectionStringParseError as e:
print(f"Invalid connection string: {e}")
# Output: Unknown keyword 'Servr'