yaml-to-sqlite 作者 simonw

加星

README 源代码

yaml-to-sqlite

PyPI Changelog Tests License

将 YAML 文件的内容加载到 SQLite 数据库表中。

$ yaml-to-sqlite --help
Usage: yaml-to-sqlite [OPTIONS] DB_PATH TABLE YAML_FILE

  Convert YAML files to SQLite

Options:
  --version             Show the version and exit.
  --pk TEXT             Column to use as a primary key
  --single-column TEXT  If YAML file is a list of values, populate this column
  --help                Show this message and exit.

用法

给定一个包含以下内容的 news.yml 文件

- date: 2021-06-05
  body: |-
    [Datasette 0.57](https://docs.datasette.com.cn/en/stable/changelog.html#v0-57) is out with an important security patch.
- date: 2021-05-10
  body: |-
    [Django SQL Dashboard](https://simonwillison.net/2021/May/10/django-sql-dashboard/) is a new tool that brings a useful authenticated subset of Datasette to Django projects that are built on top of PostgreSQL.

运行此命令

$ yaml-to-sqlite news.db stories news.yml

将创建一个具有此模式的数据库文件

$ sqlite-utils schema news.db
CREATE TABLE [stories] (
   [date] TEXT,
   [body] TEXT
);

可以使用 --pk 选项将列设置为表的主键

$ yaml-to-sqlite news.db stories news.yml --pk date
$ sqlite-utils schema news.db
CREATE TABLE [stories] (
   [date] TEXT PRIMARY KEY,
   [body] TEXT
);

单列 YAML 列表

当 YAML 文件是值列表时,可以使用 --single-column 选项,例如一个名为 dogs.yml 的文件,其中包含以下内容

- Cleo
- Pancakes
- Nixie

运行此命令

$ yaml-to-sqlite dogs.db dogs.yaml --single-column=name

将创建一个包含单个 name 列的单个 dogs 表,该列是主键

$ sqlite-utils schema dogs.db
CREATE TABLE [dogs] (
   [name] TEXT PRIMARY KEY
);
$ sqlite-utils dogs.db 'select * from dogs' -t
name
--------
Cleo
Pancakes
Nixie