Notas de lançamento de Snowflake Connector for Python para 2023¶
Este artigo contém as notas de versão do Snowflake Connector for Python, incluindo o seguinte, quando aplicável:
Mudanças de comportamento
Novos recursos
Correções de bugs voltados para o cliente
Snowflake usa controle de versão semântico para atualizações de Snowflake Connector for Python.
Versão 3.6.0 (07 de dezembro de 2023)¶
Novos recursos e atualizações¶
Adicionado suporte para tipos de vetores.
Adicionado suporte para os parâmetros de conexão
private_key_file
eprivate_key_file_pwd
.Adicionado o novo sinalizador
expired
à classeSnowflakeConnection
que rastreia se o token mestre da conexão expirou.Alterado o pin da versão urlib3 para afetar apenas versões do Python anteriores a 3.10.
Correções de bugs¶
Corrigido um bug em que a inserção da data falhava quando o formato da data era definido e a vinculação no estilo qmark era usada.
Versão 3.5.0 (13 de novembro de 2023)¶
Novos recursos e atualizações¶
Snowflake Connector for Python agora é criado exclusivamente no projeto apache arrow-nanoarrow:
Reduziu o tamanho do wheel para ~1MB e o tamanho da instalação para ~5MB.
Removida uma dependência rígida de uma versão específica do pyarrow.
O seguinte foi descontinuado em suporte ao conversor nanoarrow:
Classe
snowflake.connector.cursor.NanoarrowUsage
.Variável de ambiente
NANOARROW_USAGE
.Varável do módulo
snowflake.connector.cursor.NANOARROW_USAGE
.
Correções de bugs¶
Nenhum.
Versão 3.4.1 (09 de novembro de 2023)¶
Novos recursos e atualizações¶
Atualizadas as seguintes bibliotecas:
Atualizado a
urlib3
própria de terceiros para a versão 1.26.18.Atualizado a
requests
própria de terceiros para a versão 2.31.0.
Correções de bugs¶
Nenhum.
Versão 3.4.0 (03 de novembro de 2023)¶
Novos recursos e atualizações¶
Adição de suporte para
use_logical_type
emwrite_pandas
.Adicionado o argumento
backoff_policy
asnowflake.connector.connect
, permitindo uma política de espera configurável entre novas tentativas de solicitações com falha. Veja as implementações disponíveis no módulobackoff_policies
.Adicionado o argumento
socket_timeout
asnowflake.connector.connect
especificando a leitura do soquete e o tempo limite de conexão.Dependências removidas de pycryptodomex e oscrypto. Todas as conexões agora passam por OpenSSL através da biblioteca de criptografia, que já era uma dependência.
Correções de bugs¶
Comportamento
login_timeout
enetwork_timeout
corrigido. As novas tentativas de login e solicitações de rede agora são interrompidas corretamente depois que esses tempos limite expiram.Bug corrigido para o problema urllib3/urllib3#1878 no
urllib
do fornecedor.Corrigido o problema com a ingestão de arquivos de 80 GB para S3.
Versão 3.3.1 (18 de outubro de 2023)¶
Novos recursos e atualizações¶
Para plataformas não Windows, sugestões de comando adicionadas (
chown
ouchmod
) para permissões de arquivo insuficientes de arquivos de configuração.
Correções de bugs¶
Corrigido um problema em que o diagnóstico de conexão falhava ao concluir as verificações de certificado.
Corrigido um problema em que o iterador de seta causava
ImportError
quando as extensões C não eram compiladas.
Versão 3.3.0 (12 de outubro de 2023)¶
Novos recursos e atualizações¶
Atualizado para o projeto Apache arrow-nanoarrow para conversão de dados arrow de resultado.
Introduzida a variável de ambiente
NANOARROW_USAGE
para permitir alternar entre o conversor nanoarrow e o conversor arrow. Os valores válidos incluem:FOLLOW_SESSION_PARAMETER
, que utiliza o conversor configurado no servidor.DISABLE_NANOARROW
, que usa o conversor arrow, substituindo a configuração do servidor.ENABLE_NANOARROW
, que usa o conversor nanoarrow, substituindo a configuração do servidor.
Introduzida a enumeração
snowflake.connector.cursor.NanoarrowUsage
, cujos membros incluem:NanoarrowUsage.FOLLOW_SESSION_PARAMETER
, que utiliza o conversor configurado no servidor.NanoarrowUsage.DISABLE_NANOARROW
, que usa o conversor arrow, substituindo a configuração do servidor.NanoarrowUsage.ENABLE_NANOARROW
, que usa o conversor nanoarrow, substituindo a configuração do servidor.
Introduzida a variável do módulo
snowflake.connector.cursor.NANOARROW_USAGE
para permitir a alternância entre o conversor nanoarrow e o conversor arrow. Funciona em conjunto com a enumeraçãosnowflake.connector.cursor.NanoarrowUsage
.
Nota
A variável de ambiente, enumeração e variável de módulo recém-introduzidas são temporárias. Elas serão removidas em uma versão futura quando a mudança de arrow para nanoarrow para conversão de dados for concluída.
Correções de bugs¶
Nenhum.
Versão 3.2.1 (3 de outubro de 2023)¶
Novos recursos e atualizações¶
Adicionada segurança de thread em telemetria ao instanciar múltiplas conexões simultaneamente.
Robustez aprimorada no tratamento de alterações de autenticação.
Removido o aviso de suspensão de
urllib3.contrib.pyopenssl
da bibliotecaurllib3
.Atualizada a dependência
platformdirs
para as versões 2.6.0 a 4.0.0 das versões 2.6.0 a 3.9.0.
Correções de bugs¶
Corrigido um bug onde URL, porta e caminho eram ignorados em novas tentativas do AWS PrivateLink OCSP.
Versão 3.2.0 (7 de setembro de 2023)¶
Novos recursos e atualizações¶
Tornou a renomeação de
parser -> manager
mais consistente no módulosnowflake.connector.config_manager
.Adicionado suporte para valores padrão para
ConfigOptions
.Adicionado
default_connection_name
ao arquivoconfig.toml
.
Correções de bugs¶
Nenhum.
Versão 3.1.1 (28 de agosto de 2023)¶
Novos recursos e atualizações¶
Adicionado suporte para RSAPublicKey ao construir
AuthByKeyPair
além de bytes brutos.
Correções de bugs¶
Corrigido um bug na lógica de nova tentativa de autenticação OKTA para atualizar o token.
Corrigido um bug onde o atributo
proxy_header
estava faltando emSOCKSProxyManager
ao conectar pelo proxy SOCKS5.
Versão 3.1.0 (31 de julho de 2023)¶
Novos recursos e atualizações¶
Adicionado um recurso que permite adicionar definições de conexão ao arquivo de configuração
connections.toml
. Uma definição de conexão refere-se a uma coleção de parâmetros de conexão, por exemplo, se você quiser definir uma conexão chamada «prod»:[prod] account = "my_account" user = "my_user" password = "my_password"
Por padrão, procuramos o arquivo
connections.toml
no local especificado na variável de ambienteSNOWFLAKE_HOME
(padrão:~/.snowflake
). Se esta pasta não existir, o conector Python procurará o arquivo no localplatformdirs
, da seguinte maneira:No Linux:
~/.config/snowflake/
, mas segue as configurações de XDGNo Mac:
~/Library/Application Support/snowflake/
No Windows:
%USERPROFILE%\AppData\Local\snowflake\
Você pode determinar qual arquivo será usado executando o seguinte comando:
python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
Dependência de criptografia aumentada de <41.0.0,>=3.1.0 para >=3.1.0,<42.0.0.
Cache de resposta OCSP aprimorado para remover arquivos de cache tmp no Windows
Cache de resposta OCSP aprimorado para reduzir os tempos de gravação em disco.
Adicionado um parâmetro
server_session_keep_alive
emSnowflakeConnection
que ignora a exclusão da sessão quando a conexão do cliente é fechada.Melhoramos nossa fixação de
platformdirs
para evitar que seus novos lançamentos quebrem novas versões do conector.Permitiu que você passasse
type_mapper
parafetch_pandas_batches()
efetch_pandas_all()
.Lógica de nova tentativa aprimorada para autenticação okta para atualizar o token se a autenticação for limitada.
Adicionados motivos de repetição para consultas repetidas pelo cliente.
Remoção do suporte para Python 3.7.
Tratamento de erros aprimorado de erro de redefinição de conexão.
Correções de bugs¶
Corrigido um bug em que
SFPlatformDirs
acrescentava incorretamente nome_do_aplicativo/versão ao seu caminho.Corrigido um bug em que
write_pandas
falha quando o usuário não tem o privilégio para criar um estágio ou formato de arquivo no esquema de destino, mas tem o privilégio correto para o esquema atual.Resolvido um segfault que às vezes ocorria durante a serialização do cache em cenários multithread.
Corrigido um bug sobre a exclusão de arquivos temporários ao executar o comando PUT.
Corrigido um bug em que
pickle.dump
falhava durante a serialização do cache em cenários multithread.
Versão 3.0.4 (25 de maio de 2023)¶
Novos recursos e atualizações¶
Adicionado o parâmetro de conexão
json_result_force_utf8_decoding
para forçar a decodificação do conteúdo JSON em utf-8 quando o formato do resultado for JSON.Biblioteca própria de terceiros atualizada de urllib3 para 1.26.15
Solicitações de biblioteca própria de terceiros atualizadas para 2.29.0
Dependência de pandas atualizada de <1.6.0,>=1.0.0 para >=1.0.0,<2.1.0
Adição de suporte para tipos de geometria.
Correções de bugs¶
Corrigido um bug no qual
cursor.execute()
poderia modificar o objeto de dicionário do argumentostatement_params
ao executar uma consulta com múltiplas instruções.Corrigido um bug que impedia a chamada de
SnowflakeCursor.nextset
antes de buscar o resultado da primeira consulta se o cursor executasse uma consulta assíncrona com múltiplas instruções.Corrigido um bug quando
_prefetch_hook()
não era chamado antes de produzir resultados deexecute_async()
.Corrigido um bug onde alguns campos
ResultMetadata
eram marcados como obrigatórios quando eram opcionais.Corrigido um bug onde a inserção em massa converte a data incorretamente.
Versão 3.0.3 (20 de abril de 2023)¶
Novos recursos e atualizações¶
Adicionado um parâmetro que permite aos usuários ignorar o carregamento de arquivos para o estágio se o arquivo existir no estágio e o conteúdo do arquivo for correspondente.
Dica de tipo aprimorada do método
SnowflakeCursor.execute
.Registro GET aprimorado para avisar ao baixar vários arquivos com o mesmo nome.
Correções de bugs¶
Corrigido um bug que imprime erro nos logs do comando GET em GCS.
Adicionado um parâmetro que permite aos usuários ignorar o carregamento de arquivos para o estágio se o arquivo existir no estágio e o conteúdo do arquivo for correspondente.
Corrigido um bug que ocorria ao escrever um Pandas DataFrame com nomes de colunas contendo aspas duplas em
snowflake.connector.pandas_tool.write_pandas
.Corrigido um bug que ocorria ao escrever um Pandas DataFrame com dados binários em
snowflake.connector.pandas_tool.write_pandas
.
Versão 3.0.2 (23 de março de 2023)¶
Novos recursos e atualizações¶
Nenhum.
Correções de bugs¶
Corrigido um bug de dicas de tipo incorretas de
SnowflakeCursor.fetch_arrow_all
eSnowflakeCursor.fetchall
.Registro em log aprimorado para mascarar tokens em caso de erros.
Corrigido um bug onde
snowflake.connector.util_text.split_statements
engolia a quebra de linha final no caso quando não havia espaço entre as linhas.Corrigido um vazamento de memória no módulo de registro da extensão Cython.
Corrigido um bug onde o comando
put
em AWS gerava umAttributeError
ao carregar um arquivo composto de múltiplas partes.Corrigido um bug onde o comando
put
em AWS gerava umAttributeError
para tamanhos de arquivo maiores que 200MB.
Versão 3.0.1 (01 de março de 2023)¶
Novos recursos e atualizações¶
Robustez aprimorada do cache de resposta OCSP para lidar com erros em casos de serialização e desserialização.
Substituída a dependência de
setuptools
em favor do empacotamento.Cadeia de documentos do método
async_executes
atualizada.Os erros gerados agora possuem um campo de consulta que contém a consulta SQL que os causou, quando disponível.
Correções de bugs¶
Corrigido um bug onde
AuthByKeyPair.handle_timeout
deveria passar argumentos de palavras-chave em vez de argumentos posicionais ao chamarAuthByKeyPair.prepare
.Corrigido um bug em que o cache de token MFA se recusava a funcionar até ser reiniciado em vez de autenticar novamente.
Versão 3.0.0 (27 de janeiro de 2023)¶
Mudança do BCR (versão da mudança de comportamento)¶
Corrigido um bug onde write_pandas não usava esquemas e bancos de dados especificados pelo usuário para criar objetos intermediários.
Anteriormente, a função write_pandas criava objetos temporários no banco de dados e esquema usados atualmente e colocava apenas a tabela final (que foi criada ou anexada) no banco de dados e esquema especificados pelo usuário. Com esta versão, se os parâmetros do banco de dados ou do esquema para
write_pandas
forem diferentes do selecionado atualmente, você precisará garantir que o usuário que está executandowrite_pandas
tenha acesso para criar/descartar estágios temporários, formatos de arquivo e tabelas com o esquema referenciado pela funçãowrite_pandas
.Snowflake recomenda que você teste qualquer nova versão de driver em ambientes de pré-produção antes de implantar em ambientes de produção. Com esta mudança de comportamento, você deve dar atenção especial ao(s) cenário(s) listado(s) acima (ou seja,
write_pandas
com parâmetros de banco de dados ou esquemas diferentes do contexto atual).
Novos recursos e atualizações¶
Dependência de pyarrow aumentada de >=8.0.0,<8.1.0 para >=10.0.1,<10.1.0
Dependência pyOpenSSL aumentada de <23.0.0 para <24.0.0
Durante a autenticação baseada no navegador, o URL SSO agora é impresso antes de abri-lo no navegador
Aumentou o nível de um registro de log para quando ArrowResult não puder ser importado
Adicionada uma verificação de versão mínima de MacOS ao compilar extensões C
Correções de bugs¶
Corrigido um bug onde
write_pandas
não usava esquema e banco de dados especificados pelo usuário para criar objetos intermediáriosCorrigido um bug onde o código de resposta HTTP de 429 não era repetido
Corrigido um bug onde o cache de token MFA não funcionava