Cập nhật SQLITE-UTILS 4.1: từ đổ dữ liệu đến chế độ strict
Simon Willison vừa giới thiệu sqlite-utils 4.1, một bản phát hành dot-release với nhiều tính năng mới tuy nhỏ nhưng khá thiết yếu. Với tôi, đây là một ví dụ điển hình về cách một công cụ được phát triển liên tục, lắng nghe những "điểm đau" nhỏ nhất của người dùng và giải quyết chúng một cách tinh tế. Giờ đây, khi sử dụng sqlite-utils insert và sqlite-utils upsert, chúng ta có thể dùng tùy chọn --code để truyền vào một khối mã Python hoặc đường dẫn đến một file .py. Khối mã này phải định nghĩa hàm rows() hoặc một iterable chứa các hàng dữ liệu cần chèn. Điều này mở ra khả năng linh hoạt hơn nhiều trong việc tạo và cung cấp dữ liệu, không còn chỉ giới hạn ở việc import từ file, và là một sự mở rộng hợp lý từ cách lệnh sqlite-utils convert vốn đã hỗ trợ truyền mã Python. Một cải tiến khác, sau một thời gian dài được yêu cầu, là khả năng ghi đè kiểu dữ liệu mặc định. Lệnh sqlite-utils insert và sqlite-utils upsert giờ chấp nhận --type column-name type. Điều này cực kỳ hữu ích cho những cột trong file CSV hay TSV mà thoạt nhìn giống số nguyên, như mã ZIP code, nhưng thực tế cần được lưu trữ dưới dạng TEXT để giữ lại các số 0 ở đầu. Vấn đề nhỏ này từng gây không ít phiền toái, nhưng giờ đã có giải pháp đơn giản. Bản 4.1 cũng bổ sung phương thức table.drop_index(name) và lệnh sqlite-utils drop-index để xóa một index theo tên, với tùy chọn --ignore để bỏ qua lỗi nếu index không tồn tại. Lệnh sqlite-utils query giờ cũng linh hoạt hơn, có thể đọc truy vấn SQL từ standard input bằng cách truyền ký tự - thay vì trực tiếp câu lệnh. Đáng chú ý là sqlite-utils upsert nay có thể tự động suy luận khóa chính của một bảng đã tồn tại, giúp chúng ta không cần chỉ định --pk. Tính năng này xuất phát từ một gợi ý của mô hình AI Codex, cho thấy AI không chỉ hỗ trợ viết code mà còn có thể phát hiện những thiếu sót nhỏ trong thiết kế CLI hay API. Cuối cùng, một thay đổi quan trọng hơn là việc table.transform() và table.transform_sql() nay chấp nhận strict=True hoặc strict=False để thay đổi ch