sqlite-utils 4.1 업데이트: 코드 블록 삽입 및 데이터 타입 지정 기능 추가
요약
sqlite-utils 4.1 업데이트를 통해 코드 블록 삽입 및 데이터 타입 지정 기능이 추가되었습니다. 이제 `insert`와 `upsert` 명령어에서 Python 코드를 직접 사용하여 행을 정의할 수 있으며, `--type` 옵션으로 열의 타입을 재정의하여 데이터를 정확하게 저장할 수 있습니다.
핵심 포인트
- 코드 블록 삽입: `sqlite-utils insert`/`upsert`에 `--code` 옵션을 추가하여 파이썬 코드로 행 생성 가능
- 데이터 타입 지정: `--type column-name type`으로 열 타입을 재정의, 선행 0 유지 등 유용
- 기타 개선 사항: 인덱스 이름 삭제 기능 및 표준 입력(stdin)을 통한 SQL 쿼리 지원 강화
2026년 7월 11일
몇 일 전 4.0 버전 이후 첫 점(dot) 릴리스로, 여러 사소한 신규 기능을 도입했습니다.
sqlite-utils insert와 sqlite-utils upsert는 이제 --code 옵션을 받아 Python 코드 블록(또는 .py 파일 경로)을 제공할 수 있습니다. 이 코드는 삽입할 행(row)을 정의하는 rows() 함수나 rows 반복자(iterable)를 생성합니다. 이는 파일을 가져오는 것의 대안입니다. (#684)
sqlite-utils는 이미 CLI 인수로 Python 코드 블록을 전달할 수 있는 기능을 가지고 있었습니다. 예를 들어, sqlite-utils convert 명령어에서 다음과 같이 사용 가능했습니다:
sqlite-utils convert content.db articles headline ' def convert(value): return value.upper()'
코드 블록이 새로운 행을 직접 생성하도록 허용하는 것은 이 패턴의 자연스러운 확장입니다:
sqlite-utils insert data.db creatures --code ' def rows(): yield {"id": 1, "name": "Cleo"} yield {"id": 2, "name": "Suna"} ' --pk id
sqlite-utils insert와 sqlite-utils upsert는 이제 --type column-name type을 받아 테이블 생성 시 자동으로 선택되는 타입을 재정의할 수 있습니다. 이는 ZIP 코드처럼 정수처럼 보이지만 선행 0(leading zero)를 유지하기 위해 TEXT로 저장되어야 하는 CSV나 TSV 열에 유용합니다. (#131)
오랫동안 요청되었던 기능이 간단한 구현으로 돌아왔습니다.
- 신규
table.drop_index(name)메서드와sqlite-utils drop-index명령어를 통해 이름으로 인덱스를 삭제할 수 있습니다. 둘 다 누락된 인덱스를 무시하기 위해ignore=True/--ignore를 받을 수 있습니다. (#626)
sqlite-utils query는 이제 쿼리 대신 -를 전달하여 표준 입력(standard input)으로부터 SQL 쿼리를 읽을 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다:
echo
그리고 `table.transform_sql()`
이제 테이블의 SQLite 엄격 모드(strict mode)를 변경하기 위해 `strict=True` 또는 `strict=False`를 받을 수 있습니다. 이 옵션을 생략하면 기존 모드가 유지됩니다. (#787) - `sqlite-utils transform` 명령어는 이제 테이블의 엄격 모드를 변경하기 위해 `--strict`와 `--no-strict`를 받습니다. (#787)
이 두 기능은 Evan Hahn이 오늘 Hacker News에서 공유한 SQLite의 STRICT 테이블 선호(Prefer STRICT tables in SQLite) 아이디어에서 영감을 받았습니다. Evan은 다음과 같이 지적했습니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Simon Willison Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기