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.