Article image
CARLOS PEREIRA
CARLOS PEREIRA14/03/2023 00:23
Compartilhe

O SQLAlchemy lançou uma nova versão, o que muda?

  • #SQL
  • #Banco de dados relacional
  • #Python

Quando estamos aprendendo uma nova tecnologia estamos focados em apreender tudo seguindo os passos dos nossos Guias, no meu caso estou em BootCamp de Python, porém quando os passos não funciona, entramos em mística de achar que nós não temos capacidade nem de seguir os passos guiado imagina quando estivermos fazendo nosso trabalho, foi neste cenário que fui fazer o que mais gosto caçar um solução e vendo a documentação do SQLAlchemy que descobri que a nova versão 2.0 em diante houve muitas alterações, estas alterações foram já informadas na versão 1.x e outras só tiveram a forma de uso alteradas, a evolução foi necessária para acrescentar novos recursos a plataforma.

Essas mudanças incluem:

  • Novo paradigma de instrução ORM
  • Cache SQL em Core e ORM
  • Novos recursos declarativos, integração com ORM
  • Novo objeto de resultado
  • select() / case() Aceita expressões posicionais
  • suporte assíncrono para Core e ORM

A descrição mais detalha desses novos paradigmas, acima informados, e conforme introduzidos no SQLAlchemy 1.4. podem ser encontrados no documento "What’s New in SQLAlchemy 2.0?".

Para SQLAlchemy 2.0, todos os recursos e comportamentos da API que foram marcados como obsoletos para 2.0 agora foram finalizados; em particular, as principais APIs que não estão mais presentes incluem:

  • MetaData vinculado e execução sem conexão
  • Autocommit emulado na conexão
  • O parâmetro/modo Session.autocommit
  • Argumentos de lista/palavra-chave para select()
  • Suporte a Python 2

Para termos uma visão detalhada destes recursos descontinuados e removidos, devemos consutar o documento c 1.x -> 2.x Migration Overview .

Para exemplificar a modificação do uso do SQLAlchemy 2.0 usaremos a execução de um Script SQL usando "execulte()", como era antes e do novo formato:

# Antes

engine = create_engine('sqlite://')

sql = text('select * from user')

result = engine.execute(text)

for row in result:

  print(row)

# Agora

engine = create_engine('sqlite://')

sql = text('select * from user')

with engine.connect() as connect:

result = connect.execulte(sql)

for row in result:

  print(row)

Estas atualizações podem acarretar muitas erros nos códigos quando foi inicialmente usado o SQLAlchemy 1.4 ou anterior, por tanto é necessários tratar todas as exceções do projeto antes de entrega-lo. Este Artigo é para ajudar-nos a nos precaver de erros futuro, pois esta versão foi lançada neste mês de março de 2023. Por isso nunca paremos de nos atualizar para não ficar desatualizado.

Compartilhe
Comentários (0)