Simon Willison lança versão 0.1a0 de biblioteca para vários bancos
Protótipo leva a API do sqlite-utils para PostgreSQL, SQLite e DuckDB usando SQLAlchemy.
Protótipo leva a API do sqlite-utils para PostgreSQL, SQLite e DuckDB usando SQLAlchemy.
Simon Willison lançou em 12 de agosto de 2026 a versão 0.1a0 do alchemy-utils, uma biblioteca Python e ferramenta de linha de comando que leva a API do sqlite-utils para diferentes bancos de dados. O projeto usa SQLAlchemy como camada de acesso e mira quem precisa executar operações semelhantes em PostgreSQL, SQLite e DuckDB. A primeira versão ainda é uma alfa, mas já lista dados de um PostgreSQL local e cria uma tabela DuckDB a partir de um CSV.
Willison pediu ao Codex e ao GPT-5.6 Sol Ultra que construíssem um protótipo com os principais métodos da biblioteca anterior. A lista inclui insert, upsert, insert_all, upsert_all, create, update e recursos de inspeção de tabelas.
A proposta muda o alvo do projeto sem abandonar sua interface central. O sqlite-utils trabalha com SQLite; o alchemy-utils usa SQLAlchemy para conversar com vários mecanismos. O anúncio descreve o resultado como uma versão independente do banco, mas não apresenta uma comparação de desempenho entre os motores.
Willison também pediu testes para PostgreSQL, SQLite e DuckDB. Ele orientou os agentes a consultar o código em ~/dev/sqlite-utils, iniciar o projeto com uv init, criar um repositório Git e usar desenvolvimento orientado por testes com pytest. O texto diz que foram necessários poucos comandos adicionais para chegar a uma versão considerada boa o bastante para uma distribuição alfa.
O release está disponível no GitHub como alchemy-utils 0.1a0. O comunicado não informa licença, política de compatibilidade nem uma versão estável. Também não detalha quais partes da API antiga ainda faltam.
Para consultar uma tabela PostgreSQL, Willison mostrou um comando com uvx e o extra alchemy-utils[postgresql]:
uvx --with 'alchemy-utils[postgresql]' alchemy-utils rows 'postgresql+psycopg://simon@localhost:5432/simonwillisonblog' redirects_redirect
O comando acessa uma cópia local do banco do blog de Willison e lista linhas da tabela redirects_redirect. A saída contém campos como id, domain, path, target e created, com exemplos de redirecionamentos publicados em 2020 e 2017.
O segundo exemplo usa DuckDB e baixa o arquivo Street_Tree_List.csv do projeto sf-tree-history. O alchemy-utils recebe o CSV pela entrada padrão, cria o esquema da tabela automaticamente e grava os dados em /tmp/trees.db:
curl 'https://raw.githubusercontent.com/simonw/sf-tree-history/refs/heads/main/Street_Tree_List.csv' | uvx --with 'alchemy-utils[duckdb]' alchemy-utils insert 'duckdb:////tmp/trees.db' trees - --csv
Esse teste expõe a principal ressalva de desempenho relatada no anúncio. A primeira execução levou quase uma hora; depois que Willison pediu ao Codex uma otimização, o tempo caiu para cerca de 35 segundos. O comunicado não informa o hardware, o tamanho do arquivo ou se a medição vale para outras cargas.
Os exemplos comprovam que a ferramenta executa consultas em PostgreSQL e inserções em DuckDB. Eles não comprovam, por si só, que todos os métodos funcionem nos três bancos citados. A afirmação sobre cobertura depende dos testes mencionados por Willison, enquanto os resultados publicados mostram apenas esses dois fluxos práticos.
O projeto nasce como um experimento conduzido por agentes de programação. Codex e GPT-5.6 Sol Ultra receberam a tarefa de pesquisar a adaptação, escrever testes e criar o repositório; Willison então publicou o primeiro release. Por enquanto, o dado concreto é uma alfa utilizável, não uma substituição pronta do sqlite-utils.