sqlite-utils
Python CLI工具和库,用于操作SQLite数据库。
一些功能亮点
- 管道JSON(或CSV或TSV)直接导入到新的SQLite数据库文件中,并自动创建具有适当模式的表
- 运行内存SQL查询,包括联接,直接针对CSV、TSV或JSON文件中的数据,并查看结果
- 配置SQLite全文搜索对数据库表进行搜索,并按相关性排序结果
- 对表进行转换以进行SQLite
ALTER TABLE
不直接支持的模式更改,例如更改列的类型 - 提取列到单独的表中,以更好地规范化现有数据
- 安装插件以添加自定义SQL函数和其他功能
阅读更多博客文章,这个系列涉及sqlite-utils的新功能以及其他标记为sqliteutils的文章。
安装
pip install sqlite-utils
如果您在macOS上使用Homebrew:
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文档了解更多命令的全面覆盖。
作为库使用
您还可以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")
查看完整的库文档了解使用Python库可以做的所有其他事情。
相关项目
- Datasette: 一个用于探索和发布数据的工具
- csvs-to-sqlite: 将CSV文件转换为SQLite数据库
- db-to-sqlite: 一个CLI工具,用于将MySQL或PostgreSQL数据库导出为SQLite文件
- dogsheep: 一系列基于
sqlite-utils
的个人分析工具