# Ra mắt alchemy-utils 0.1a0: Giải pháp thay thế sqlite-utils đa nền tảng

- Nguồn: Simon Willison Blog
- Thời gian phát hành: 2026-08-13 02:51 (giờ Việt Nam)
- Điểm AI: 60/100
- Link AIHOT.vn: https://aihot.vn/items/44f842493bdc6312
- Nguồn dữ liệu AI HOT: https://aihot.news/items/cmss4gai801qwro27jqkp2nk4
- Link gốc: https://simonwillison.net/2026/Aug/12/alchemy-utils

## Tóm tắt AI

Simon Willison vừa giới thiệu alchemy-utils, thư viện hỗ trợ SQLAlchemy cho phép thao tác dữ liệu linh hoạt trên nhiều hệ quản trị như PostgreSQL, SQLite và DuckDB, được xây dựng với sự hỗ trợ từ AI.

## Thân bài

Tôi đã suy nghĩ từ lâu về việc một phiên bản không phụ thuộc vào cơ sở dữ liệu (database agnostic) của thư viện Python và tiện ích CLI sqlite-utils của tôi sẽ trông như thế nào. Sáng nay (đúng nghĩa là một ý tưởng nảy ra khi đang tắm), tôi đã giao nhiệm vụ cho Codex và GPT-5.6 Sol Ultra xây dựng một bản mẫu:

Hãy thực hiện một nghiên cứu nhanh (research spike) để xem cần những gì nhằm xây dựng một thư viện có cùng API cốt lõi như SQLite-utils - đặc biệt là các phương thức insert, upsert, insert_all, upsert_all, create, update và các tính năng nội quan bảng (table introspection) - nhưng được hỗ trợ bởi SQLAlchemy để nó có thể hoạt động với nhiều công cụ cơ sở dữ liệu khác nhau.

Kiểm thử với PostgreSQL, SQLite và DuckDB.

Sử dụng ~/dev/sqlite-utils làm tài liệu tham khảo.

Tạo một kho lưu trữ git cho dự án này và commit sớm, thường xuyên - sử dụng uv init để bắt đầu dự án - áp dụng quy trình TDD (phát triển hướng kiểm thử) red/green và pytest, tham khảo ~/dev/django-sql-dashboard để có ý tưởng về cách thức hoạt động của các bài kiểm thử PostgreSQL.

Chỉ cần rất ít câu lệnh nhắc (prompt) bổ sung để tạo ra dự án này ở trạng thái đủ tốt để phát hành bản alpha.

Đây là một dòng lệnh tôi có thể sử dụng để liệt kê các hàng trong một bảng thuộc bản sao PostgreSQL cục bộ của cơ sở dữ liệu blog tôi:

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

Kết quả đầu ra bắt đầu như sau:

Hoặc nếu bạn muốn một cơ sở dữ liệu DuckDB chứa mọi cái cây ở San Francisco, với lược đồ (schema) được tạo tự động để khớp với tệp tin:

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

(Lần đầu tiên chạy lệnh đó mất gần một giờ, vì vậy tôi đã nhờ Codex tối ưu hóa và giảm thời gian xuống còn khoảng 35 giây.)
