Simon Willison · 博客

alchemy-utils 0.1a0

alchemy-utils 0.1a0

二〇二六年八月二十六日 · 英文原文

alchemy-utils 0.1a0 发布,这是一个与数据库无关的 Python 库和 CLI 工具,基于 SQLAlchemy 实现 sqlite-utils 核心 API(insert、upsert、insert_all、upsert_all、create、update 及表内省),支持 PostgreSQL、SQLite 和 duckdb。项目由 Codex 和 GPT-5.6 Sol Ultra 构建,采用红绿 TDD 和 pytest 测试。示例命令可列出 PostgreSQL 表行或向 DuckDB 插入 CSV 数据,后者经优化后运行时间从近一小时降至约 35 秒。

发布:alchemy-utils 0.1a0

我长期以来一直在思考,我的 sqlite-utils Python 库和 CLI 工具如果做成一个与数据库无关的版本会是什么样子。今天早上(literally 一个淋浴时的项目),我让 Codex 和 GPT-5.6 Sol Ultra 构建一个原型:

只用了很少的后续提示,这个项目就达到了可以发布 alpha 版本的状态。这里有一行命令,我可以用来列出本地 PostgreSQL 中博客数据库表里的行:

uvx --with 'alchemy-utils[postgresql]' alchemy-utils rows 'postgresql+psycopg://simon@localhost:5432/simonwillisonblog' redirects_redirect

输出开头如下:

[
  {
    "id": 2328,
    "domain": "simonwillison.net",
    "path": "2020/May/21/apple-photos-sqlite/",
    "target": "/2020/May/21/dogsheep-photos/",
    "created": "2020-05-21T13:03:46.591692-07:00"
  },
  {
    "id": 3,
    "domain": "feeds.simonwillison.net",
    "path": "swn-links",
    "target": "https://simonwillison.net/atom/links/",
    "created": "2017-10-01T14:12:54.820729-07:00"
  }
]

或者,如果你想要一个包含旧金山每棵树的 DuckDB 数据库,schema 会自动根据文件创建:

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

(第一次运行这个命令花了将近一个小时,所以我让 Codex 优化了一下,把它降到了大约 35 秒。)

标签:databases、postgresql、projects、python、sql、sqlalchemy、sqlite、sqlite-utils、duckdb、coding-agents、codex

译自 Simon Willison · 博客 · 录于 二〇二六年八月二十六日