simonw/sqlite-utils

GitHub: simonw/sqlite-utils

用于操作 SQLite 数据库的 Python CLI 工具与库,支持从 JSON/CSV 快速导入数据、内存查询、全文搜索及表结构转换等功能。

Stars: 2122 | Forks: 159

# sqlite-utils [![PyPI](https://img.shields.io/pypi/v/sqlite-utils.svg)](https://pypi.org/project/sqlite-utils/) [![更新日志](https://img.shields.io/github/v/release/simonw/sqlite-utils?include_prereleases&label=changelog)](https://sqlite-utils.datasette.io/en/stable/changelog.html) [![Python 3.x](https://img.shields.io/pypi/pyversions/sqlite-utils.svg?logo=python&logoColor=white)](https://pypi.org/project/sqlite-utils/) [![测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce733292a922c08274cf5a2096f8fa4cf01023bfa51a36ef6beecaaef371a9d9.svg)](https://github.com/simonw/sqlite-utils/actions?query=workflow%3ATest) [![文档状态](https://readthedocs.org/projects/sqlite-utils/badge/?version=stable)](http://sqlite-utils.datasette.io/en/stable/?badge=stable) [![codecov](https://codecov.io/gh/simonw/sqlite-utils/branch/main/graph/badge.svg)](https://codecov.io/gh/simonw/sqlite-utils) [![许可证](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/sqlite-utils/blob/main/LICENSE) [![discord](https://img.shields.io/discord/823971286308356157?label=discord)](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, 数据库管理, 文档结构分析, 无后门, 调试插件, 逆向工具