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.
Este artículo enumera qué cambió en cada versión del controlador mssql-python, lo más reciente es lo primero. Cada sección cubre nuevas funcionalidades, cambios de comportamiento y correcciones de errores para una versión.
Para las versiones que Microsoft soporta actualmente, véase Ciclo de vida de soporte.
MSSQL-Python 1.14.0
Fecha de lanzamiento: agosto de 2026
Enhancements
La detección y enlace de parámetros se ejecuta en código nativo
La detección y vinculación de tipos de parámetros ahora se ejecutan en una única tubería nativa en lugar de llamadas Python por parámetro. Este cambio soluciona un importante cuello de botella en el rendimiento, con mejoras de mayor rendimiento de extremo a extremo en operaciones más grandes, como insertos a granel. No es necesario cambiar la solicitud.
Correcciones de errores
El timeout argumento para connect() establecer el tiempo de tiempo de espera de la consulta en lugar del de autenticación
El timeout argumento ahora establece SQL_ATTR_LOGIN_TIMEOUT y limita el intento de autenticación, que es lo que describen el nombre del argumento y la documentación. En versiones anteriores se convirtió en el tiempo límite de consulta por sentencia, por lo que connect(timeout=30) no limitaba cuánto podía durar un intento de conexión, y abortaba las consultas tras 30 segundos. El tiempo de espera de consulta por estado sigue disponible como la Connection.timeout propiedad.
Importante
Si pasas timeout a connect() abortar consultas de larga duración, ese comportamiento ya no ocurre. En su lugar, en su lugar Connection.timeout . Lo mismo ocurre si connect(timeout=) dependiste de ampliar el tiempo de espera de conexión que bulkcopy() usa para su conexión interna: configúralo Connection.timeout antes de crear el cursor.
Para más información, véase Tiempo de espera de conexión.
bulkcopy() rechazado timeout=0
Un error de 0 validación generó, aunque 0 significa que no hay timeout tiempo de espera en la API de copia masiva subyacente. El método ahora acepta 0 y desactiva el tiempo de espera de la operación. Los valores negativos, no enteros y booleanos siguen siendo rechazados.
Para más información, véase Copia masiva.
La limpieza sustituyó a la excepción original de obtención de Arrow
Cuando fallaba una búsqueda de un lector Arrow, la ruta de limpieza del controlador generaba un segundo error que reemplazaba al original, por lo que los llamantes veían un fallo de limpieza en lugar de la razón por la que fallaba la búsqueda. Ahora la limpieza comprueba primero el estado del cursor y conserva la excepción original.
executemany() Los errores de conversión decimal incluían valores de parámetros
Un fallo en la conversión decimal reportaba executemany() el valor infractor a través de la excepción encadenada, lo que podía colocar los datos del cliente en registros de aplicaciones y sistemas de monitorización. El error ahora solo informa del índice de fila, del índice de columna y del tipo de valor.
Para obtener más información, consulte Control de errores.
Copia masiva rechazada de tipos de Vista de Flecha
bulkcopy_arrow() no podían consumir matrices de Arrow View de longitud variable, así que las columnas Polars string_view debían convertirse primero con DataFrame.to_arrow() ellas. Los valores de la Vista de Cadenas y los NULLs pasan ahora directamente por la Interfaz de Datos Arrow C.
Para más información, véase integración de Polars.
La carga de extensiones de Windows utilizaba la arquitectura de la CPU anfitriona
En Windows, el controlador elegía su extensión nativa en función de la CPU del host en lugar del intérprete en ejecución, así que x64 Python en un host ARM64 se cargaba a través de una ruta de respaldo y escribía avisos en stdout. El cargador ahora deriva la arquitectura del intérprete y reporta los retrocesos como advertencias.
MSSQL-Python 1.13.0
Fecha de lanzamiento: agosto de 2026
Enhancements
Los binarios controladores ODBC solo se envían en mssql-python-odbc
La versión 1.13.0 elimina el libs/ respaldo de la mssql-python rueda y declara mssql-python-odbc==18.6.2.1 en install_requires. El comando pip install mssql-python sigue produciendo un controlador funcional. Instala explícitamente mssql-python-odbc cuando instales con --no-deps, o desde un índice privado que no lo refleje.
Para obtener más información, consulte Instalación.
Copia masiva de fuentes Apache Arrow
El nuevo cursor.bulkcopy_arrow() método carga datos que ya están en formato Apache Arrow, sin convertir primero cada fila a objetos Python. Pasar una fuente de flechas a bulkcopy() ahora eleva TypeError.
Para más información, consulta integración con Apache Arrow y copia masiva.
token_providerparameter for Microsoft Entra credentials
La connect() función y la Connection clase aceptan un token_provider argumento, por lo que puedes pasar un objeto de credencial como DefaultAzureCredential en lugar de nombrar un modo de autenticación en la cadena de conexión. El argumento es mutuamente excluyente con la Authentication palabra clave y con los tokens que pasan por attrs_before, y solo soporta el alcance comercial de la nube de Azure.
Para más información, consulte Autenticación de Microsoft Entra.
Agrupación de conexiones consciente de identidad
El conjunto de conexiones ahora separa las conexiones por identidad Microsoft Entra. En versiones anteriores, el pool solo se asignaba a la cadena de conexión, por lo que el pool podía entregar una conexión autenticada como un usuario a una solicitud hecha por otro. El controlador también adquiere un token solo cuando una solicitud de conexión falla en el pool, y actualiza una conexión agrupada cuando su token está dentro de los 5 minutos de expiración.
Para más información, consulte Agrupación de conexiones.
Correcciones de errores
executemany() insertaba filas cero cuando aparecían los NULLs después de la primera fila
Una llamada que mezclaba valores numéricos no NULL y NULL insertaba cero filas y no generaba executemany() ninguna excepción, cuando el primer NULL aparecía después de la primera fila. Este comportamiento afectaba a parámetros de tinyint, smallint, int y float . El controlador ahora inicializa indicadores ODBC para cada parámetro numérico de ancho fijo antes de la ejecución del array.
Un SQL_WVARCHAR convertidor de salida transformaba columnas no de cadena
Registrar un convertidor de una sola cadena también transformaba los valores int, decimal y de fecha , porque el controlador volvía al SQL_WVARCHAR convertidor para cualquier columna sin su propio convertidor. El controlador ahora usa ese respaldo solo cuando el tipo de Python mapeado de la columna es str o bytes.
Los convertidores de salida registrados por código SQL entero nunca se ejecutaron
Los convertidores registrados con un código entero de tipo SQL, como SQL_DECIMAL, se almacenaban pero nunca se invocaban, porque el controlador solo se despachaba en el tipo Python en cursor.description. El controlador ahora despacha primero el código entero, luego el tipo Python y finalmente el SQL_WVARCHAR respaldo.
Importante
Si registraste convertidores por código SQL entero en una versión anterior, esos convertidores empiezan a funcionar cuando actualizas. Revísalos antes de desplegarlos, porque los valores de columna que antes pasaban sin cambios ahora se transforman.
Para más información, véase Convertidores de tipo personalizado.
Cerrar un lector Arrow no liberó el cursor del lado del servidor
Cerrar un lector Arrow dejaba asignado el cursor del lado del servidor y el padre Cursor en un estado inconsistente, porque cursor.arrow_reader() devolvía un archivo raw pyarrow.RecordBatchReader. El método ahora devuelve un envoltorio cuyo close() método libera el cursor del lado del servidor y reinicia el estado del cursor, y el envoltorio funciona como gestor de contexto.
Para más información, véase integración con Apache Arrow.
Un cursor parcialmente inicializado se levanta AttributeError en Cursor.__del__
Un cursor cuyo inicializador falló levantó a AttributeError como una excepción no elevable durante la recogida de basura.
Cursor.__init__ se levantó antes de establecer los closed atributos y hstmt , que __del__ luego intentaron leer. El inicializador ahora establece ambos atributos antes de cualquier código que pueda levantarse, y __del__ protege su llamada de registro para que permanezca segura durante el apagado del intérprete.
MSSQL-Python 1.12.0
Fecha de lanzamiento: julio de 2026
Enhancements
Paquete de acompañamiento independiente mssql-python-odbc
Los binarios de controladores ODBC ahora se publican por separado como mssql-python-odbc, un paquete complementario solo de datos fijado a la versión 18.6.2. No necesitas cambiar ningún código, porque pip install mssql-python instala el paquete complementario con él. El cargador nativo prefiere el paquete complementario y recurre a los binarios agrupados dentro de la mssql-python rueda cuando no está presente.
Para obtener más información, consulte Instalación.
Correcciones de errores
cursor.bulkcopy() Ahora usa el tiempo de espera de conexión de la conexión principal
bulkcopy() Ahora utiliza el tiempo de espera de conexión de su conexión padre, que configuras con connect(..., timeout=<seconds>). Antes, la conexión separada que abría la copia masiva usaba un tiempo de espera de conexión de 15 segundos codificado de forma fija que no se podía sobrescribir desde Python. Una conexión principal creada con timeout=0 sigue recibiendo el valor predeterminado de 15 segundos.
Para más información, véase Copia masiva.
cursor.bulkcopy() soporta columnas de tipo CLR definidas por el usuario
cursor.bulkcopy() anteriormente fallaba Protocol Error: Unsupported TDS type for bulk copy: 0xF0 para cualquier columna de destino que usara un tipo definido por el usuario en tiempo de ejecución del lenguaje común (CLR), incluyendo los tipos de geografía, geometría y jerarquíid incorporados. El controlador ahora mapea las columnas UDT de CLR a varbinary(max) en el cable y transmite los bytes que suministras como carga útil del IBinarySerialize UDT. La solución se incluye en mssql_py_core la 0.1.7.
Para más información, consulte Copia masiva y Mapeos de tipos de datos.
MSSQL-Python 1.11.0
Fecha de lanzamiento: julio de 2026
Enhancements
Semántica mejorada del gestor de contexto
with connection: ahora se hace commit de la transacción cuando el bloque sale limpiamente, y la revierte cuando una excepción sale del bloque.
Para obtener más información, consulte Administración de transacciones.
Correcciones de errores
- Se ha corregido un interbloqueo del GIL en el proceso de desmontaje de ODBC (
conn.close()ycursor.close()) y enSQLDescribeParampara parámetros con valorNoneen configuraciones de túnel SSH y de reenviador en proceso. - Parámetros fijos
BINARYyVARBINARYNULL en tablas temporales y variables de tabla. Cuando falla la resolución automática de tipos, el controlador ahora emite una advertencia de Python con indicaciones explícitascursor.setinputsizes(). - Corregido el fallo de
import mssql_pythonen Apple Silicon tras una instalación limpia (regresión en 1.8.0). Las dependencias dylib de ODBC incluidas ahora se han reescrito para las arquitecturasarm64yx86_64. - Se solucionó un deadlock GIL en el núcleo de Rust que congelaba las operaciones de copia masiva al autenticar con
Authentication=ActiveDirectoryServicePrincipal.
MSSQL-Python 1.10.0
Fecha de lanzamiento: junio de 2026
Enhancements
Soporte de ActiveDirectoryServicePrincipal para copia masiva
cursor.bulkcopy() Ahora soporta Authentication=ActiveDirectoryServicePrincipal, así que puedes insertar en masa con credenciales de principal de servicio.
Para más información, véase Copia masiva y autenticación Microsoft Entra.
Correcciones de errores
- Se corrigieron los datos no ASCII
VARCHARyCHARen la ruta de obtención de Arrow. - Se corrigieron los tiempos de espera de conexión durante las operaciones de carga masiva.
MSSQL-Python 1.9.0
Fecha de lanzamiento: junio de 2026
Enhancements
Objetos de fila en copia masiva
cursor.bulkcopy() ahora acepta objetos obtenidos Row directamente en lugar de requerir conversión manual de tuplas.
Para más información, consulta Copia masiva y Objetos de fila.
Correcciones de errores
- Embalaje de ruedas fijas, así que
simdutfsiempre está vinculado estáticamente. - Se corrigieron las inserciones grandes
DECIMALenexecutemany(). - Se corrigió el fallback incorrecto de tipo para parámetros NULL.
- Se corrigieron las excepciones en los procesos de serialización y deserialización.
- Se ha corregido
nextset()para que conserve los mensajes dePRINTentre distintos conjuntos de resultados. - Se corrigió el manejo de
Rowen la ruta alternativa deexecutemany()data-at-execution. - Se corrigió la comprobación de tipos del método fetch para las herramientas de análisis estático.
MSSQL-Python 1.8.0
Fecha de lanzamiento: mayo de 2026
Enhancements
Soporte de ActiveDirectoryMSI para copia masiva
cursor.bulkcopy() ahora admite Authentication=ActiveDirectoryMSI para identidades administradas por el sistema y asignadas por el usuario.
Para más información, véase Copia masiva y autenticación Microsoft Entra.
Indexación de filas mediante claves de cadena
Ahora puedes acceder a valores de fila por nombre de columna, por ejemplo row["col"], además de indexación posicional y acceso a atributos.
Para más información, véase Objetos de fila.
Actualización incluida del controlador ODBC
El controlador Microsoft ODBC para SQL Server incluido se actualizó a la versión 18.6.2.1.
Correcciones de errores
- Se corrigieron problemas de duración del atributo de conexión diferida en la autenticación basada en tokens.
- Se corrigió el análisis repetido de la cadena de conexión en la ruta de autenticación.
- Anotaciones de tipo fijo
executemany()para entradas de secuencia.
mssql-python 1.7.1
Fecha de lanzamiento: mayo de 2026
Enhancements
Ampliación de la cobertura de las ruedas y mejoras en el rendimiento
Esta versión incluye:
- Llantas compatibles con RHEL 8.
- Restauré las ruedas de Python 3.10
universal2de macOS. - Mejoró el manejo del UTF-16 gracias
simdutfa . - Camino caliente optimizado
execute().
Impacto en el rendimiento: El rendimiento de ejecución por lotes mejora gracias a las optimizaciones de rutas calientes en el execute() método.
Para obtener más información, consulte Instalación.
Correcciones de errores
- Corrigieron fallos de autenticación para que generen
mssql_pythonDB-API excepciones en lugar deRuntimeError. - Liberación extendida de GIL bloqueando la ejecución, obtención, transacción y llamadas a atributos de conexión ODBC.
- Se corrigieron fallos
executemany()al cambiar de signo los valores decimales. - Se ha corregido la decodificación inconsistente de CP1252
VARCHARen distintas plataformas. - Se corrigieron los fallos
cursor.bulkcopy()con las cadenas vacías en las columnasNVARCHAR(MAX)yVARCHAR(MAX).
Note
La versión 1.7.0 fue retirada debido a problemas de publicación. Usa la versión 1.7.1 o posterior.
MSSQL-Python 1.6.0
Fecha de lanzamiento: abril de 2026
Enhancements
Sanitización de cadenas de conexión basada en analizador
La sanitización de cadenas de conexión ahora utiliza un analizador en lugar de expresiones regulares, por lo que las cadenas de conexión que contienen caracteres especiales en campos de contraseña y valores con llaves se analizan correctamente.
Para obtener más información, consulte Cadenas de conexión.
Correcciones de errores
- Se solucionó la liberación de GIL al bloquear las operaciones de conexión y desconexión ODBC.
- Se corrigieron los cuelgues de
setinputsizes()con las sugerenciasSQL_DECIMALySQL_NUMERIC. - Se corrigió el comportamiento incorrecto
fetchone()de los métodos del catálogo ODBC. - Se corrigen errores de estado inválido del cursor cuando
reset_cursor=Falsese usa. - Se corrigieron las anotaciones de tipo
executemany()para secuencias de parámetros basadas en mapeos. - Se añadió una protección de recorrido de ruta para
setup_logging(log_file_path=...).
MSSQL-Python 1.5.0
Fecha de lanzamiento: abril de 2026
Características nuevas
Soporte de búsqueda de Apache Arrow
Tres nuevos métodos de cursor proporcionan una recuperación de datos columnares de alto rendimiento a través de la Interfaz de Datos Arrow C:
-
cursor.arrow()devuelvepyarrow.Tablecompleto. -
cursor.arrow_batch()devuelve un solopyarrow.RecordBatch. -
cursor.arrow_reader()devuelve unpyarrow.RecordBatchReaderpara transmisión en flujo.
Estos métodos no crean un objeto Python para cada valor. Para la documentación completa, véase integración con Apache Arrow.
Soporte para el tipo sql_variant
El controlador ahora detecta columnas sql_variant al recuperar los datos, resuelve su tipo base real y devuelve valores de Python correctamente tipados en lugar de bytes sin procesar.
Note
sql_variant Las columnas utilizan una ruta de obtención en streaming, que puede tener un pequeño impacto en el rendimiento en comparación con las columnas de tipo fijo.
Para obtener más información, consulte Asignaciones de tipos de datos.
Soporte nativo UUID
Una nueva native_uuid configuración controla si UNIQUEIDENTIFIER las columnas se devuelven como uuid.UUID objetos (por defecto) o como cadenas mayúsculas compatibles con pyodbc. Configúralo a nivel de módulo o por conexión.
Para más información, véase Configuración de módulos.
Exportación pública de la clase Row
La Row clase ahora se exporta al nivel superior para las anotaciones de tipos.
Para más información, véase Objetos de fila.
Correcciones de errores
- Se corrigió la detección de falsos positivos
?dentro de identificadores entre corchetes, literales de cadena y comentarios. - Se corrigió la asociación de parámetros NULL para las columnas
VARBINARY(ya no genera errores de conversión implícita). - Se corrigió un problema por el que los valores
datetime.timeperdían microsegundos en conversiones de ida y vuelta en columnas deTIME(1)aTIME(7). - Se ha corregido la ruta de obtención de Arrow para incluir correctamente segundos fraccionarios en las columnas
TIME. - Copia masiva corregida con métodos de autenticación Microsoft Entra ID (los campos de credenciales obsoletos ya no causan errores de validación).
- Caché instancias de credenciales de identidad de Azure a nivel de módulo para mejorar el rendimiento de autenticación.
MSSQL-Python 1.4.0
Fecha de lanzamiento: febrero de 2026
Características nuevas
Soporte para copias masivas
La carga masiva de datos de alto rendimiento ahora está disponible a través de cursor.bulkcopy(). El método acepta opciones para batch_size, timeout, column_mappings, keep_identity, check_constraintstable_lock, keep_nulls, fire_triggers, , y use_internal_transaction.
Para más información, véase Copia masiva.
Improvements
- Optimizaciones de rendimiento para conjuntos de resultados grandes.
- Menor uso de memoria durante operaciones por lotes.
- Mensajes de error mejorados para errores en la copia masiva.
MSSQL-Python 1.3.0
Fecha de lanzamiento: enero de 2026
Características nuevas
Clase de escenarios
Configura el comportamiento a nivel de módulo a través de la nueva Settings clase, que incluye la lowercase configuración para nombres de columnas en cursor.description.
Para más información, véase Configuración de módulos.
Improvements
- Mejor gestión del tiempo de espera de conexión durante el conmutamiento por error de Azure SQL.
- Compatibilidad mejorada con Python 3.13.
MSSQL-Python 1.2.0
Fecha de lanzamiento: enero de 2026
Características nuevas
Métodos de descubrimiento de esquemas
Nuevos métodos de cursor exploran metadatos de bases de datos: tables(), columns(), primaryKeys(), foreignKeys(), procedures(), statistics(), , y getTypeInfo().
Para más información, véase Descubrimiento de esquemas.
Improvements
- Caché mejorada de metadatos para consultas repetidas de esquemas.
- Mejor gestión de las columnas calculadas en los resultados de
columns().
mssql-python 1.1.0
Fecha de lanzamiento: diciembre de 2025
Características nuevas
Convertidores de salida personalizados
Registrar funciones personalizadas para transformar los valores de columna durante la obtención, con add_output_converter(), get_output_converter(), remove_output_converter(), y clear_output_converters().
Para más información, véase Convertidores de tipo personalizado.
Improvements
- Mejores mensajes de error para fallos de conversión de tipos.
- Soporte para funciones de convertidor que devuelven
None.
MSSQL-Python 1.0.0
Fecha de lanzamiento: noviembre de 2025
Lanzamiento inicial de disponibilidad general
La primera versión de disponibilidad general de mssql-python, el controlador nativo de Python de Microsoft para SQL Server.
Para más información, véase el controlador mssql-python.
Características principales
- Arquitectura DDBC: Conectividad directa con bases de datos sin necesidad de instalación de controladores ODBC.
- Cumplimiento de DB-API 2.0: Interfaz estándar de Python para bases de datos.
- Agrupación de conexiones: Gestión integrada de la agrupación de conexiones.
- Autenticación Microsoft Entra: Soporte completo para autenticación basada en identidad en Azure.
- Cifrado TLS: Conexiones seguras con validación de certificados.
Características de conexión
- 21 palabras clave de cadena de conexión.
- 9 modos de autenticación (SQL, Windows y 7 métodos Microsoft Entra ID).
- Control de confirmación automática.
- Métodos de ejecución:
execute(),executemany(), ybatch_execute(). - Atributos de conexión a través de
set_attr()ygetinfo(). - Soporte para gestores de contexto.
Características del cursor
- Métodos estándar de búsqueda:
fetchone(),fetchmany(),fetchall(). - Métodos extendidos:
fetchval(),skip(). - Métodos de ejecución:
execute()yexecutemany(). - Objetos de fila con acceso por atributos y por índice.
- Navegación por conjuntos de resultados múltiples con
nextset().
Compatibilidad con tipos de datos
- Todos los tipos nativos de SQL Server.
- Correspondencia de tipos entre Python y SQL.
- Constantes de tipo SQL para tipado explícito (por ejemplo,
mssql_python.SQL_DECIMAL). - Manejo de NULL como en Python
None.
Compatibilidad con transacciones
- Confirmación y reversión manuales.
- Modo de confirmación automática.
- Control de nivel de aislamiento.
- Detección y manejo de bloqueos.
Modos de autenticación
| Mode | Descripción |
|---|---|
| Autenticación de SQL Server | Nombre de usuario y contraseña |
| autenticación de Windows | Trusted_Connection |
| ActiveDirectoryDefault | DefaultAzureCredential |
| ActiveDirectoryInteractive | Inicio de sesión basado en navegador |
| ActiveDirectoryDeviceCode | Flujo de código de dispositivo |
| ActiveDirectoryPassword | Nombre de usuario y contraseña de Microsoft Entra (obsoleto; usa ROPC) |
| ActiveDirectoryMSI | Identidad administrada |
| ActiveDirectoryServicePrincipal | Entidad principal de servicio |
| ActiveDirectoryIntegrated | Windows Kerberos |
Upgrade
De pyodbc
Para una guía detallada sobre migración, véase Migrar desde pyodbc.
Diferencias clave:
- Se admiten tanto
?(qmark) como%(name)s(pyformat) como estilos de parámetros. Tus consultas existentes?funcionan sin cambios. - No existe el método
callproc(). Utiliza en su lugar las instruccionesEXECUTE. - Agrupación de conexiones integrada.
- No requiere controladores ODBC externos.
De pymssql
Para una guía detallada sobre migración, véase Migrar desde pymssql.
Diferencias clave:
- Reemplazar
%sy%dlos marcadores de parámetros por?o%(name)s. - Usa una cadena de conexión en lugar de argumentos posicionales.
- No dependía de FreeTDS.
- Múltiples cursores concurrentes por conexión.
- Los objetos de fila con acceso a atributos reemplazan
as_dict=Truea .
Entre versiones de mssql-python
Actualiza el controlador para obtener nuevas funciones y soluciones.
pip install --upgrade mssql-python
Consulta las notas de lanzamiento para ver si hay cambios repentinos antes de actualizar los sistemas de producción.
Plan de desarrollo
Para próximas funciones y la hoja de ruta de desarrollo, consulta el repositorio de GitHub.