Eszközök

Mesterséges intelligenciával generált szöveg

Alchemy-utils 0.1a0: adatbázis-agnosztikus sqlite-utils prototípus AI segítségével

A főszereplő Simon Willison új nyílt forráskódú projektje, az alchemy-utils 0.1a0, amely a sqlite-utils könyvtár adatbázis-agnosztikus megfelelőjét célozza meg SQLAlchemy alapokon.

Alchemy-utils 0.1a0: adatbázis-agnosztikus sqlite-utils prototípus AI segítségével

Simon Willison közzétette az alchemy-utils 0.1a0 alfa verzióját: egy kísérleti könyvtárat, amely a meglévő sqlite-utils könyvtár ugyanazon mag API-ját valósítja meg, de SQLAlchemy-re építve, így több adatbázis-motort képes kiszolgálni.

Mi történt és hogyan készült

A projekt egy rövid „research spike” keretében indult: Willison a Codex és a GPT-5.6 Sol Ultra modelleket használta arra, hogy egy prototípust építsen, amely tartalmazza a sqlite-utils alapvető műveleteit — például insert, upsert, insert_all, upsert_all, create, update, valamint a tábla introspekciós funkciókat —, de SQLAlchemy backenddel.

A feladatok között szerepelt továbbá a PostgreSQL és SQLite és DuckDB ellenőrzése, referencia használata a ~/dev/sqlite-utils könyvtárból, valamint egy git repó létrehozása, gyakori commitokkal. A projekt inicializálásához az uv init parancsot javasolta, és a fejlesztéshez red/green TDD és pytest használatát ajánlotta; a ~/dev/django-sql-dashboard nyújtott ötletet a PostgreSQL tesztekhez.

AI szerepe és eredmény

Willison szerint nagyon kevés követő prompt kellett ahhoz, hogy a projekt egy alfa kiadáshoz elég jó állapotban elkészüljön. Ennek eredményeként készült el az alchemy-utils 0.1a0, amelyet most publikált.

Példák: parancssoros használat és kimenet

A szerző megoszt egy egysoros példát arra, hogyan listázhatók a sorok egy helyi PostgreSQL adatbázisban a projekt parancssori eszközével:

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

A parancs kimenetének eleje így néz ki:

[ { "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" }

Egy másik példa egy DuckDB használatára, ahol a San Francisco fák adatait tartalmazó CSV fájlt tölti be automatikusan létrehozott sémával:

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

Teljesítmény: a szerző megjegyzi, hogy ez a művelet az első futtatásnál majdnem egy órát vett igénybe; Codex optimalizálta a folyamatot, és a végső futásidő körülbelül 35 másodperc lett.

Miért számít ez

Az alchemy-utils célja, hogy a sqlite-utils egyszerű, kényelmes API-ját több adatbázisra tegye elérhetővé anélkül, hogy a felhasználóknak a backend részleteivel kellene foglalkozniuk. A projekt korai állapota ellenére a szerző szerint elegendő funkcionalitás gyűlt össze ahhoz, hogy alfa kiadásként megosztható legyen, és példák is mutatják a gyakorlatban való használatot PostgreSQL és DuckDB esetén.

Címkék: databases, postgresql, projects, python, sql, sqlalchemy, sqlite, sqlite-utils, duckdb, coding-agents, codex