Simon Willison
85

Thủ thuật

Ra mắt alchemy-utils 0.1a0: Thư viện thao tác dữ liệu đa nền tảng dựa trên SQLAlchemy

(giờ Việt Nam)

Tóm tắt AI

Simon Willison giới thiệu bản thử nghiệm alchemy-utils, thư viện kế thừa API của sqlite-utils nhưng hỗ trợ nhiều hệ quản trị cơ sở dữ liệu như PostgreSQL, SQLite và DuckDB thông qua SQLAlchemy.

Bản dịch AI

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.)

PythonSQLAlchemyDatabaseOpenSourceLập trình
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Simon Willison. Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.