Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo lista o que mudou em cada versão do driver mssql-python, a mais recente em primeiro lugar. Cada seção cobre novos recursos, mudanças de comportamento e correções de bugs para uma versão.
Para as versões que a Microsoft atualmente suporta, veja Ciclo de vida de Suporte.
mssql-python 1.14.0
Data de lançamento: agosto de 2026
Enhancements
Detecção e vinculação de parâmetros executadas em código nativo
A detecção e a vinculação de tipos de parâmetros agora são executadas em um único pipeline nativo, em vez de chamadas em Python por parâmetro. Essa mudança corrige um gargalo significativo de desempenho, com ganhos ainda maiores no throughput de ponta a ponta em operações de maior porte, como inserções em massa. Não é necessária mudança na inscrição.
Correções de erros
O timeout argumento para connect() definir o tempo limite da consulta em vez do tempo limite da autenticação
O timeout argumento agora define SQL_ATTR_LOGIN_TIMEOUT e limita a tentativa de autenticação, que é o que o nome do argumento e a documentação descrevem. Nas versões anteriores, ele passou a ser o tempo limite de consulta por instrução, então connect(timeout=30) não limitava por quanto tempo uma tentativa de conexão poderia durar e interrompia as consultas após 30 segundos. O tempo limite da consulta para cada instrução permanece disponível na propriedade Connection.timeout.
Importante
Se você passou timeout para que connect() abortasse consultas demoradas, esse comportamento não ocorre mais. Defina Connection.timeout em vez disso. O mesmo se aplica se você confiou em connect(timeout=) para aumentar o tempo limite de conexão que bulkcopy() usa para sua conexão interna: defina Connection.timeout antes de criar o cursor.
Para mais informações, consulte Tempo limite da conexão.
bulkcopy() Rejeitado timeout=0
Um timeout de 0 gerou um erro de validação, embora 0 signifique que não há tempo limite na API subjacente de cópia em massa. O método agora aceita 0 e desativa o tempo limite da operação. Valores negativos, não inteiros e booleanos ainda são rejeitados.
Para mais informações, veja Cópia em massa.
A limpeza substituiu a exceção original de busca do Arrow
Quando uma busca a partir de um leitor Arrow falhava, a rotina de limpeza do driver gerava um segundo erro que substituía o original, de modo que quem chamou via uma falha de limpeza em vez do motivo da falha na busca. A limpeza passa a verificar primeiro o estado do cursor e preserva a exceção original.
executemany() Erros de conversão decimais incluíam valores de parâmetros
Uma falha na conversão decimal em executemany() expôs o valor problemático por meio da exceção encadeada, o que poderia colocar dados do cliente em logs de aplicativos e sistemas de monitoramento. O erro agora reporta apenas o índice de linha, o índice da coluna e o tipo de valor.
Para obter mais informações, veja Tratamento de erro.
Tipos do Arrow View rejeitados na cópia em massa
bulkcopy_arrow() não podia consumir arrays Arrow View de comprimento variável, então as colunas do Polars string_view tiveram primeiro que ser convertidas com DataFrame.to_arrow(). Os valores da String View e NULLs agora passam diretamente pela Interface de Dados Arrow C.
Para mais informações, veja integração com Polars.
O carregamento de extensões do Windows usava a arquitetura da CPU do host
No Windows, o driver selecionava sua extensão nativa com base na CPU do host, em vez do interpretador em execução, então o Python x64 em um host ARM64 era carregado por um caminho alternativo e emitia mensagens no stdout. O carregador agora deriva a arquitetura do interpretador e relata as alternativas como avisos.
mssql-python 1.13.0
Data de lançamento: agosto de 2026
Enhancements
Os binários do driver ODBC são distribuídos apenas em mssql-python-odbc
A versão 1.13.0 remove o fallback libs/ do wheel mssql-python e declara mssql-python-odbc==18.6.2.1 em install_requires. O comando pip install mssql-python ainda produz um driver funcionando. Instale mssql-python-odbc explicitamente ao instalar com --no-deps, ou de um índice privado que não o espelhe.
Para obter mais informações, confira Instalação.
Cópia em lote de fontes do Apache Arrow
O novo cursor.bulkcopy_arrow() método carrega dados que já estão no formato Apache Arrow, sem converter cada linha em objetos Python primeiro. Passar uma origem Arrow para bulkcopy() agora gera TypeError.
Para mais informações, veja integração com Apache Arrow e cópia em massa.
token_provider parâmetro para credenciais do Microsoft Entra
A connect() função e a Connection classe aceitam um token_provider argumento, então você pode passar um objeto de credencial, como DefaultAzureCredential em vez de nomear um modo de autenticação na cadeia de conexão. O argumento é incompatível com a palavra-chave Authentication e com tokens passados por attrs_before, e suporta apenas o escopo da nuvem comercial do Azure.
Para obter mais informações, consulte Autenticação do Microsoft Entra.
Pool de conexões com reconhecimento de identidade
O pool de conexões agora separa as conexões de acordo com a identidade Microsoft Entra. Em versões anteriores, o pool era indexado apenas pela string de conexão, de modo que podia fornecer a uma solicitação feita por um usuário uma conexão autenticada em nome de outro. O driver também adquire um token somente quando uma solicitação de conexão não é atendida pelo pool e renova uma conexão do pool quando seu token está a menos de 5 minutos do vencimento.
Para mais informações, veja Agrupamento de conexões.
Correções de erros
executemany() inseriu zero linhas quando valores NULL apareceram após a primeira linha
Uma executemany() chamada que misturava valores numéricos não NULL e NULL não inseria nenhuma linha e não gerava nenhuma exceção quando o primeiro NULL aparecia após a primeira linha. Esse comportamento afetava parâmetros tinyint, smallint, int e float. O driver agora inicializa indicadores ODBC para cada parâmetro numérico de largura fixa antes da execução do array.
Um conversor de saída SQL_WVARCHAR transformou colunas que não eram do tipo string
Registrar um único conversor de string também convertia os valores int, decimal e date, pois o driver recorria ao conversor SQL_WVARCHAR para qualquer coluna sem seu próprio conversor. O driver agora usa esse recurso apenas quando o tipo de Python mapeado da coluna é str ou bytes.
Conversores de saída registrados por código inteiro do tipo SQL nunca foram executados
Conversores registrados com um código inteiro do tipo SQL, como SQL_DECIMAL, eram armazenados, mas nunca invocados, porque o driver despachava apenas no tipo Python em cursor.description. O driver agora envia com base primeiro no código de inteiro, depois no tipo Python e, em seguida, no fallback SQL_WVARCHAR.
Importante
Se você registrou conversores por código inteiro do tipo SQL em uma versão anterior, esses conversores começam a rodar quando você atualiza. Revise-os antes de implantar, porque os valores das colunas que antes passavam sem alterações agora são transformados.
Para mais informações, veja Conversores de tipo personalizado.
Fechar um leitor Arrow não liberou o cursor do lado do servidor
O fechamento de um leitor Arrow deixou o cursor no lado do servidor alocado e o pai Cursor em estado inconsistente, porque cursor.arrow_reader() retornou um pyarrow.RecordBatchReader bruto. O método agora retorna um wrapper cujo close() método libera o cursor do lado do servidor e redefine o estado do cursor, e o wrapper funciona como um gerenciador de contexto.
Para mais informações, veja integração com o Apache Arrow.
Um cursor parcialmente inicializado gerou AttributeError em Cursor.__del__
Um cursor cujo inicializador falhou gerou um AttributeError como uma exceção não gerável durante a coleta de lixo.
Cursor.__init__ foi acionado antes de definir os atributos closed e hstmt, que __del__ tentou então ler. O inicializador agora define ambos os atributos antes de qualquer código que possa ser levantado, e __del__ protege sua chamada de registro para que permaneça segura durante o desligamento do interpretador.
mssql-python 1.12.0
Data de lançamento: julho de 2026
Enhancements
Pacote complementar independente mssql-python-odbc
Os binários do driver ODBC agora são publicados separadamente como mssql-python-odbc, um pacote complementar somente de dados fixado na versão 18.6.2. Você não precisa mudar nenhum código, porque pip install mssql-python instala o pacote complementar com ele. O carregador nativo prefere o pacote complementar e recorre aos binários agrupados dentro da mssql-python roda quando ele não está presente.
Para obter mais informações, confira Instalação.
Correções de erros
cursor.bulkcopy() agora usa o tempo limite da conexão principal
bulkcopy() agora usa o tempo limite de conexão da conexão pai, que você define com connect(..., timeout=<seconds>). Antes, a conexão separada que o bulk copy abria usava um timeout de conexão de 15 segundos fixo no código, que você não podia substituir via Python. Uma conexão parental criada com timeout=0 ainda recebe o padrão de 15 segundos.
Para mais informações, veja Cópia em massa.
cursor.bulkcopy() suporta colunas de tipo CLR definidas pelo usuário
cursor.bulkcopy() falhava anteriormente com Protocol Error: Unsupported TDS type for bulk copy: 0xF0 para qualquer coluna de destino que usasse um tipo definido pelo usuário do Common Language Runtime (CLR), incluindo os tipos internos geography, geometry e hierarchyid. O driver agora mapeia as colunas CLR UDT para varbinary(max) no fio e transmite os bytes que você fornece como payload do IBinarySerialize UDT. A correção é lançada na mssql_py_core versão 0.1.7.
Para mais informações, veja Cópia em massa e Mapeamentos de tipos de dados.
mssql-python 1.11.0
Data de lançamento: julho de 2026
Enhancements
Semântica aprimorada do gerenciador de contexto
with connection: agora confirma a transação quando o bloco é encerrado sem erros e a reverte quando uma exceção faz com que a execução saia do bloco.
Para obter mais informações, consulte Gerenciamento de transações.
Correções de erros
- Corrigido um deadlock do GIL na rotina de encerramento do ODBC (
conn.close()ecursor.close()) e emSQLDescribeParampara parâmetros com valorNoneem configurações com túnel SSH e com forwarder no processo. - Parâmetros fixos
BINARYeVARBINARYNULL em tabelas temporárias e variáveis de tabela. Quando a resolução automática de tipos falha, o driver agora emite um aviso em Python com orientação explícitacursor.setinputsizes(). - Corrigido o problema em que
import mssql_pythonfalhava no Apple Silicon em uma instalação limpa (regressão na versão 1.8.0). As dependências ODBC dylib incluídas agora são reescritas para as arquiteturasarm64ex86_64. - Corrigido um deadlock do GIL no núcleo em Rust que congelava operações de cópia em massa durante a autenticação com
Authentication=ActiveDirectoryServicePrincipal.
mssql-python 1.10.0
Data de lançamento: junho de 2026
Enhancements
Suporte ao ActiveDirectoryServicePrincipal para cópia em massa
cursor.bulkcopy() agora oferece suporte a Authentication=ActiveDirectoryServicePrincipal, para que você possa fazer inserções em massa com credenciais de entidade de serviço.
Para mais informações, veja Cópia em massa e autenticação Microsoft Entra.
Correções de erros
- Corrigidos os dados não ASCII
VARCHAReCHARno caminho de busca do Arrow. - Prazos de conexão fixos durante operações de carga em massa.
mssql-python 1.9.0
Data de lançamento: junho de 2026
Enhancements
Objetos de linha na cópia em massa
cursor.bulkcopy() agora aceita objetos buscados Row diretamente em vez de exigir conversão manual de tuplas.
Para mais informações, consulte cópia em massa e objetos de linha.
Correções de erros
- Embalagem de roda fixa, então
simdutfestá sempre vinculada estaticamente. - Corrigidas grandes inserções
DECIMALemexecutemany(). - Corrigido o tipo incorreto de fallback para parâmetros NULL.
- Corrigidos os ciclos de serialização e desserialização de exceções com pickle.
- Corrigido
nextset()para que preserve mensagensPRINTentre diferentes conjuntos de resultados. - Corrigido tratamento
Rowno caminho de fallback de dados na execuçãoexecutemany(). - Corrigida a verificação de tipos de método de busca para ferramentas de análise estática.
mssql-python 1.8.0
Data de lançamento: maio de 2026
Enhancements
Suporte ao ActiveDirectoryMSI para cópia em massa
cursor.bulkcopy() agora comporta Authentication=ActiveDirectoryMSI para identidades gerenciadas atribuídas pelo sistema e pelo usuário.
Para mais informações, veja Cópia em massa e autenticação Microsoft Entra.
Indexação de linhas por chave de texto
Agora você pode acessar valores de linha pelo nome da coluna, por exemplo row["col"], além da indexação posicional e do acesso a atributos.
Para mais informações, consulte Objetos de linha.
Atualização do driver ODBC incluído
O driver Microsoft ODBC para SQL Server incluído foi atualizado para a versão 18.6.2.1.
Correções de erros
- Corrigidos problemas no ciclo de vida do connect-attribute adiado na autenticação baseada em tokens.
- Corrigiu a análise repetida da cadeia de conexão no fluxo de autenticação.
- Corridas as anotações de tipo
executemany()para entradas de sequência.
MSSQL-Python 1.7.1
Data de lançamento: maio de 2026
Enhancements
Cobertura ampliada das rodas e melhorias de desempenho
Esta versão inclui:
- Rodas compatíveis com RHEL 8.
- Restaurei as rodas do Python 3.10
universal2do macOS. - Tratamento aprimorado de UTF-16 por meio de
simdutf. - Caminho quente otimizado
execute().
Impacto no desempenho: A taxa de execução em lote melhora devido às otimizações do caminho ativo no método execute().
Para obter mais informações, confira Instalação.
Correções de erros
- Corrigidas falhas de autenticação para que passem a gerar exceções DB-API
mssql_pythonem vez deRuntimeError. - Liberação estendida de GIL bloqueando a execução, busca, transação e chamadas de atributos de conexão ODBC.
- Corrigidas falhas
executemany()quando valores decimais mudam de sinal. - Corrigida a decodificação inconsistente do CP1252
VARCHARentre plataformas. - Corrigidas falhas
cursor.bulkcopy()para cadeias de caracteres vazias nas colunasNVARCHAR(MAX)eVARCHAR(MAX).
Note
A versão 1.7.0 foi retirada devido a problemas de publicação. Use a versão 1.7.1 ou posterior.
mssql-python 1.6.0
Data de lançamento: abril de 2026
Enhancements
Sanitização de cadeia de conexão baseada em analisador sintático
A higienização de strings de conexão agora usa um analisador em vez de expressões regulares, de modo que strings de conexão que contêm caracteres especiais em campos de senha e valores entre chaves sejam interpretadas corretamente.
Para obter mais informações, consulte Cadeias de conexão.
Correções de erros
- Corrigida a liberação do GIL durante operações bloqueantes de conexão e desconexão via ODBC.
- Corrigidas as falhas de
setinputsizes()com as indicaçõesSQL_DECIMALeSQL_NUMERIC. - Corrigido o comportamento incorreto de
fetchone()para métodos do catálogo ODBC. - Corrigido erros de estado inválido do cursor quando
reset_cursor=Falseé usado. - Corrigidas as dicas de tipo de
executemany()para sequências de parâmetros baseadas em mapeamento. - Adicionada uma proteção de travessia de caminho para
setup_logging(log_file_path=...).
MSSQL-Python 1.5.0
Data de lançamento: abril de 2026
Novos recursos
Suporte de busca Apache Arrow
Três novos métodos de cursor oferecem recuperação colunar de dados de alto desempenho por meio da Interface de Dados Arrow C:
-
cursor.arrow()retorna umpyarrow.Tablecompleto. -
cursor.arrow_batch()retorna um únicopyarrow.RecordBatch. -
cursor.arrow_reader()exibepyarrow.RecordBatchReaderpara streaming.
Esses métodos não criam um objeto Python para cada valor. Para documentação completa, veja integração com o Apache Arrow.
Suporte ao tipo sql_variant
O driver agora detecta colunas sql_variant no momento da busca, determina seu tipo base subjacente e retorna valores de Python com o tipo correto, em vez de bytes brutos.
Note
Colunas sql_variant usam um caminho de busca em streaming, que pode ter um leve impacto no desempenho em comparação com colunas do tipo fixo.
Para obter mais informações, consulte mapeamentos de tipo de dados.
Suporte nativo à UUID
Uma nova configuração native_uuid controla se as colunas UNIQUEIDENTIFIER são retornadas como objetos uuid.UUID (padrão) ou como cadeias de caracteres em maiúsculas compatíveis com pyodbc. Configure no nível do módulo ou para cada conexão.
Para mais informações, veja Configuração do módulo.
Exportação pública da classe Row
A classe Row agora é exportada no nível superior para anotações de tipos.
Para mais informações, consulte Objetos de linha.
Correções de erros
- Corrigida a detecção incorreta de
?dentro de identificadores entre colchetes, literais de cadeia de caracteres e comentários. - Fixei a vinculação de parâmetros NULL para
VARBINARYcolunas (não gera mais erros implícitos de conversão). - Corrigida a perda de microssegundos nos valores de
datetime.timedurante os ciclos de ida e volta para colunasTIME(1)aTIME(7). - Corrigido o caminho de busca do Arrow para incluir corretamente frações de segundo para colunas
TIME. - Corrigida a cópia em massa com métodos de autenticação do Microsoft Entra ID (campos de credenciais obsoletos não causam mais erros de validação).
- Instâncias de credenciais Azure Identity armazenadas em cache no nível do módulo para melhorar o desempenho da autenticação.
mssql-python 1.4.0
Data de lançamento: fevereiro de 2026
Novos recursos
Suporte para cópia em massa
O carregamento de dados em massa de alto desempenho agora está disponível por meio de cursor.bulkcopy(). O método aceita opções para batch_size, timeout, column_mappings, keep_identity, check_constraintstable_lock, , keep_nulls, fire_triggers, e use_internal_transaction.
Para mais informações, veja Cópia em massa.
Improvements
- Otimizações de desempenho para grandes conjuntos de resultados.
- Uso reduzido de memória durante operações em lote.
- Mensagens de erro aprimoradas para falhas de cópia em massa.
mssql-python 1.3.0
Data de lançamento: janeiro de 2026
Novos recursos
Classe de configurações
Configure o comportamento do módulo por meio da nova classe Settings, que inclui a configuração lowercase para nomes de colunas em cursor.description.
Para mais informações, veja Configuração do módulo.
Improvements
- Melhor manejo do timeout da conexão durante o failover do SQL do Azure.
- Compatibilidade aprimorada com Python 3.13.
MSSQL-Python 1.2.0
Data de lançamento: janeiro de 2026
Novos recursos
Métodos de descoberta de esquemas
Novos métodos de cursor exploram metadados de banco de dados: tables(), columns(), primaryKeys(), foreignKeys(), procedures(), statistics(), , e getTypeInfo().
Para mais informações, veja Descoberta de esquemas.
Improvements
- Cache aprimorado de metadados para consultas repetidas de esquema.
- Melhor tratamento das colunas computadas nos resultados
columns().
mssql-python 1.1.0
Data de lançamento: dezembro de 2025
Novos recursos
Conversores de saída personalizados
Registre funções personalizadas para transformar os valores da coluna ao buscar, com add_output_converter(), get_output_converter(), remove_output_converter() e clear_output_converters().
Para mais informações, veja Conversores de tipo personalizado.
Improvements
- Melhores mensagens de erro para falhas na conversão de tipo.
- Suporte para funções de conversor que retornam
None.
MSSQL-Python 1.0.0
Data de lançamento: novembro de 2025
Lançamento inicial para disponibilidade geral
A primeira versão de disponibilidade geral do mssql-python, o driver nativo de Python da Microsoft para SQL Server.
Para mais informações, veja o driver mssql-python.
Principais recursos
- Arquitetura DDBC: Conectividade direta com banco de dados sem exigir instalação de drivers ODBC.
- Conformidade com a DB-API 2.0: Interface padrão de banco de dados do Python.
- Pool de conexões: Gerenciamento integrado de pool de conexões.
- Autenticação Microsoft Entra: Suporte completo para autenticação baseada em identidade no Azure.
- Criptografia TLS: Conexões seguras com validação de certificados.
Recursos de conexão
- 21 palavras-chave de cadeia de conexão.
- 9 modos de autenticação (SQL, Windows e 7 métodos Microsoft Entra ID).
- Controle de confirmação automática.
- Métodos de execução:
execute(),executemany(), ebatch_execute(). - Atributos de conexão através de
set_attr()egetinfo(). - Suporte ao gerenciador de contexto.
Recursos do cursor
- Métodos padrão de busca:
fetchone(),fetchmany(),fetchall(). - Métodos estendidos:
fetchval(),skip(). - Métodos de execução:
execute()eexecutemany(). - Objetos de linha com acesso a atributos e índice.
- Navegação por múltiplos conjuntos de resultados com
nextset().
Suporte do tipo de dados
- Todos os tipos nativos do SQL Server.
- Mapeamentos de tipos entre Python e SQL.
- Constantes de tipo SQL para tipagem explícita (por exemplo,
mssql_python.SQL_DECIMAL). - Tratamento de NULL em Python
None.
Suporte à transação
- Confirmação e reversão manuais.
- Modo de autocommit.
- Controle de nível de isolamento.
- Detecção e manuseio de bloqueios.
Modos de autenticação
| Modo | Descrição |
|---|---|
| Autenticação do SQL Server | Nome de usuário e senha |
| autenticação do Windows | Trusted_Connection |
| ActiveDirectoryDefault | DefaultAzureCredential |
| ActiveDirectoryInteractive | Login baseado em navegador |
| ActiveDirectoryDeviceCode | Fluxo de código do dispositivo |
| ActiveDirectoryPassword | Nome de usuário e senha da Microsoft Entra (descontinuado; usa ROPC) |
| ActiveDirectoryMSI | Identidade gerenciada |
| ActiveDirectoryServicePrincipal | Entidade de serviço |
| ActiveDirectoryIntegrated | Windows Kerberos |
Upgrade
De pyodbc
Para orientações detalhadas sobre migração, veja Migrar a partir de pyodbc.
Principais diferenças:
- Tanto o estilo de parâmetro
?(qmark) quanto o estilo de parâmetro%(name)s(pyformat) são suportados. Suas consultas existentes?funcionam sem alterações. - Nenhum método
callproc(). Use instruçõesEXECUTEem vez delas. - Pool de conexões integrado.
- Sem dependência de driver ODBC externo.
De pymssql
Para orientações detalhadas sobre migração, veja Migrar a partir do pymssql.
Principais diferenças:
- Substitua os marcadores de parâmetro
%se%dpor?ou%(name)s. - Use uma cadeia de conexão em vez de argumentos posicionais.
- Sem dependência do FreeTDS.
- Múltiplos cursores concorrentes por conexão.
- Objetos de linha com acesso a atributos substituem
as_dict=True.
Entre as versões mssql-python
Atualize o driver para obter novos recursos e correções.
pip install --upgrade mssql-python
Verifique as notas de versão para ver se há alterações de falha antes de atualizar os sistemas de produção.
Roteiro
Para recursos futuros e o roteiro de desenvolvimento, veja o repositório GitHub.