Publicado em Uncategorized

Migrando dados entre esquemas parecidos com Python

Devido a uma experiência que tive recentemente, descobri que é muito mais cômodo usar um ORM em scripts Python para migrar dados entre esquemas.

O motivo principal é o tratamento de nulls. Quando realizamos consultas com as funções primitivas da Python DB API v2.0, um registro será representado por uma tupla de elementos. Os valores null serão convertidos para None. Depois, se queremos usar a lista de tuplas da consulta para inserir registros numa tabela, necessitamos tratar os valores None para null. Aí está a chateação.

A situação pode ficar pior se a biblioteca que implementa a API não facilita para os programadores, como é o caso da psycopg2, um engine para PostgreSQL.

Minha recomendação é usar SQLObject como ORM para estas tarefas, por ser bem simples.

Powered by ScribeFire.

Anúncios

3 comentários em “Migrando dados entre esquemas parecidos com Python

  1. Oi, caro, Wálter!

    O meu problema foi como colocar os valores da string de INSERT no método execute(). Eu acreditava que devíamos colocar o sinal de interrogação aonde seriam os valores, para que o segundo parâmetro alimentasse essas posições, inclusive tratando seus valores:

    cursor.execute(“insert into aluno (id, nome, idade) values (?, ?, ?)”, (aluno.id, aluno.nome, aluno.idade))

    Mas ele não reconhece o caractere de interrogação. Pesquisando mais um pouco, descobri que o pyscopg2 usa o $1, $2 … no lugar de ?. Infelizmente, não funcionou e também, já havia começado a usar o SQLObject.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s