Escrito por

Software Engineer at Zarmik
Artigo Heloisa Paiva · 3 h atrás 3m read

Programando com Python Embutido usando o Claude Code

Desde que comecei a usar o Claude Code, minha motivação para criar coisas disparou.

Anteriormente, mesmo que eu quisesse construir algo, o ato de codificar parecia um incômodo, então, a menos que houvesse uma necessidade muito forte, eu raramente chegava ao ponto de programar. Mas agora, se eu apenas anotar as especificações, o Claude Code cuida do resto automaticamente, resultando em uma melhoria dramática na produtividade.

Eu venho de uma geração nativa em ObjectScript, então costumava sentir certa hesitação quando se tratava de mudar para o Python. No entanto, como o Claude Code se destaca em Python, agora existem poucos motivos para escolher ObjectScript para novos desenvolvimentos.

Dito isso, inicialmente eu estava um pouco preocupado sobre quão bem o Claude Code entenderia as peculiaridades do Embedded Python, mas percebi que isso era, em grande parte, uma preocupação desnecessária.

Ele parece entender adequadamente a maior parte do que está escrito na documentação do IRIS.

E produz um código conciso e polido que eu nunca conseguiria escrever sozinho.

Uma tarefa que sempre achei que seria bom ter, mas que raramente implementava devido ao incômodo, é a funcionalidade de importação/exportação de tabelas.

No portal de gerenciamento, é fácil exportar resultados de consulta para CSV. No entanto, ao editar ou revisar arquivos CSV, o Excel é mais conveniente. No macOS, os arquivos CSV são normalmente gerados em UTF-8.

O problema é que o Excel no Mac assume que os arquivos CSV estão em Shift-JIS, portanto, quando o texto em japonês é incluído, o resultado é uma grave corrupção de caracteres.

Portanto, ser capaz de ler e escrever diretamente no formato XLSX resolveria o problema, então pedi o código para exportar e importar arquivos do Excel.

A solicitação foi a seguinte:

# Exportação e Importação de Dados de Itens de Despesa

## Nome do Programa

expenseitem.py

## Como Executar

### Importar Dados

python3 expenseitem.py import expense.xlsx

### Exportar Dados

python3 expenseitem.py export expense.xlsx

## Detalhes do Processamento

### Importar Dados

Excluir todas as instâncias da classe YNC.ExpenseItem no InterSystems IRIS
(usando o método %KillExtent de YNC.ExpenseItem)

A primeira linha do arquivo Excel especificado contém os nomes das colunas de YNC.ExpenseItem.

Leia o arquivo Excel especificado linha por linha e insira registros em instâncias de YNC.ExpenseItem
na ordem das colunas do cabeçalho, usando a interface SQL do IRIS Embedded Python.

### Exportar Dados

Escreva todos os dados das instâncias da classe YNC.ExpenseItem no arquivo Excel especificado linha por linha.

Determine a ordem das colunas com base nas informações do cabeçalho no arquivo Excel.

A resposta do Claude Code foi a seguinte:

Primeiro, vou verificar o conteúdo do arquivo. Comandos executados, arquivos exibidosComandos executados, 
arquivos exibidosEntendi a estrutura.
Um ponto importante é que a Description (Descrição) é usada como IdKey (chave primária), portanto deve ser tratada adequadamente em vez de usar um INSERT simples.
Arquivos criados, arquivos lidosArquivos criados, 
lidos
Aqui estão os pontos principais da implementação:

Processamento de importação

Após excluir todos os dados com %KillExtent(), leia o arquivo Excel linha por linha e realize as operações de INSERT.
Como os nomes das colunas da linha de cabeçalho são usados diretamente nas instruções SQL, funciona mesmo se a ordem das colunas no Excel mudar.
A coluna ID é excluída da inserção porque é gerenciada automaticamente pelo IRIS.
Como Description é o IdKey, valores duplicados causariam erros, mas isso é evitado excluindo todos os dados antecipadamente com %KillExtent().

Processamento de exportação

Se o arquivo de saída já existir, o SELECT e a saída serão realizados de acordo com a ordem do cabeçalho nesse arquivo (tratamento flexível de colunas).
Se o arquivo não existir, uma ordem padrão (a mesma de expenseitem.xlsx) será usada.
Recupere o ID interno do IRIS selecionando %ID como ID.


Como você pode ver, ele produz código com uma compreensão sólida das características específicas do IRIS.