simonw/sqlite-utils
GitHub: simonw/sqlite-utils
用于操作 SQLite 数据库的 Python CLI 工具与库,支持从 JSON/CSV 快速导入数据、内存查询、全文搜索及表结构转换等功能。
Stars: 2122 | Forks: 159
# sqlite-utils
[](https://pypi.org/project/sqlite-utils/)
[](https://sqlite-utils.datasette.io/en/stable/changelog.html)
[](https://pypi.org/project/sqlite-utils/)
[](https://github.com/simonw/sqlite-utils/actions?query=workflow%3ATest)
[](http://sqlite-utils.datasette.io/en/stable/?badge=stable)
[](https://codecov.io/gh/simonw/sqlite-utils)
[](https://github.com/simonw/sqlite-utils/blob/main/LICENSE)
[](https://discord.gg/Ass7bCAMDw)
用于操作 SQLite 数据库的 Python CLI 工具和库。
## 部分功能亮点
- [通过管道传入 JSON](https://sqlite-utils.datasette.io/en/stable/cli.html#inserting-json-data)(或 [CSV 或 TSV](https://sqlite-utils.datasette.io/en/stable/cli.html#inserting-csv-or-tsv-data))直接写入新的 SQLite 数据库文件,并自动创建具有适当 schema 的表
- [运行内存 SQL 查询](https://sqlite-utils.datasette.io/en/stable/cli.html#querying-data-directly-using-an-in-memory-database),包括 joins,直接针对 CSV、TSV 或 JSON 文件中的数据执行并查看结果
- 针对您的数据库表[配置 SQLite 全文搜索](https://sqlite-utils.datasette.io/en/stable/cli.html#configuring-full-text-search),并对它们执行搜索查询,按相关性排序
- 对您的表执行[转换操作](https://sqlite-utils.datasette.io/en/stable/cli.html#transforming-tables),以实现 SQLite `ALTER TABLE` 不直接支持的 schema 更改,例如更改列的类型
- 将[列提取](https://sqlite-utils.datasette.io/en/stable/cli.html#extracting-columns-into-a-separate-table)到单独的表中,以更好地规范化您现有的数据
- 使用 Python 迁移文件和 `sqlite-utils migrate` 命令[管理数据库迁移](https://sqlite-utils.datasette.io/en/stable/migrations.html)
- [安装插件](https://sqlite-utils.datasette.io/en/stable/plugins.html) 以添加自定义 SQL 函数和其他功能
从 sqlite-utils 3.x 升级?请查看 [4.0 升级指南](https://sqlite-utils.datasette.io/en/stable/upgrading.html#upgrading-from-3-x-to-4-0)。
在我的博客上阅读更多内容,请参阅 [sqlite-utils 的新功能](https://simonwillison.net/series/sqlite-utils-features/) 系列文章以及其他[标记为 sqlite-utils 的文章](https://simonwillison.net/tags/sqlite-utils/)。
## 安装
```
pip install sqlite-utils
```
或者,如果您在 macOS 上使用 [Homebrew](https://brew.sh/):
```
brew install sqlite-utils
```
## 作为 CLI 工具使用
现在您可以像这样使用 CLI 工具执行操作:
```
$ sqlite-utils memory dogs.csv "select * from t"
[{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}]
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
[####################################] 100%
$ sqlite-utils tables dogs.db --counts
[{"table": "dogs", "count": 2}]
$ sqlite-utils dogs.db "select id, name from dogs"
[{"id": 1, "name": "Cleo"},
{"id": 2, "name": "Pancakes"}]
$ sqlite-utils dogs.db "select * from dogs" --csv
id,age,name
1,4,Cleo
2,2,Pancakes
$ sqlite-utils dogs.db "select * from dogs" --table
id age name
---- ----- --------
1 4 Cleo
2 2 Pancakes
```
您可以像这样将 JSON 数据导入到新的数据库表中:
```
$ curl https://api.github.com/repos/simonw/sqlite-utils/releases \
| sqlite-utils insert releases.db releases - --pk id
```
或者对于 CSV 文件中的数据:
```
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
```
`sqlite-utils memory` 允许您将 CSV 或 JSON 数据导入到内存数据库中,并在单个命令中对其运行 SQL 查询:
```
$ cat dogs.csv | sqlite-utils memory - "select name, age from stdin"
```
请参阅 [完整的 CLI 文档](https://sqlite-utils.datasette.io/en/stable/cli.html) 以获取更多命令的详尽说明。
## 作为库使用
您也可以 `import sqlite_utils` 并像这样将其作为 Python 库使用:
```
import sqlite_utils
db = sqlite_utils.Database("demo_database.db")
# 这一行会创建一个 "dogs" 表(如果该表不存在的话):
db["dogs"].insert_all([
{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}
], pk="id")
```
请查看[完整的库文档](https://sqlite-utils.datasette.io/en/stable/python-api.html),了解 Python 库的其他所有功能。
## 相关项目
* [Datasette](https://datasette.io/):用于探索和发布数据的工具
* [csvs-to-sqlite](https://github.com/simonw/csvs-to-sqlite):将 CSV 文件转换为 SQLite 数据库
* [db-to-sqlite](https://github.com/simonw/db-to-sqlite):将 MySQL 或 PostgreSQL 数据库导出为 SQLite 文件的 CLI 工具
* [dogsheep](https://dogsheep.github.io/):基于 `sqlite-utils` 构建的一系列用于个人分析的工具
标签:Python, SQLite, 数据库管理, 文档结构分析, 无后门, 调试插件, 逆向工具