dataset是一个轻量级Python数据库库
一、安装
dataset是一个轻量级Python数据库库,核心理念:
「数据库操作,就该和操作字典一样简单」
✅ 支持SQLite、MySQL、PostgreSQL(主流数据库全覆盖);
✅ 不用预先建表——传个字典进去,自动帮你创建表和字段;
✅ 增删改查全靠字典,比如table.insert({'name': '张三'})就够了;
✅ 能导出JSON/CSV/Excel,不用手动处理格式;
✅ 轻量无依赖,装完就能用,不占内存。
pip install dataset # 要连MySQL/PostgreSQL?装对应的扩展(按需选) pip install dataset[mysql] # 支持MySQL pip install dataset[postgresql] # 支持PostgreSQL pip install dataset[complete] # 全版本(所有数据库都支持)
像用字典一样玩数据库,比写INSERT INTO users (name, email, age, city) VALUES ('张三', ...)简单
import dataset
db = dataset.connect('sqlite:///xx.db')
print("数据库连接成功!")
users = db['AI_PIX_VERSE']
sss = users.insert(
{
"title": "参数",
"data": "{'requestNo': 'e43c07702ed1474284d7e9df4e3a5cf0', 'userId': 'test-95242', 'type': '2', 'prompt': '我爱你一万年'}",
"imgurl": "http://10.37.62.68:8081/dic-result/people-12.png",
"response":'{"platformNo":"100001","respData":"{\"ErrCode\":\"500090\",\"ErrMsg\":\"Insufficient balance. Unable to generate video. Please top up your credits.\"}',
}
)
print(f"表里现在有{len(users)}条数据")
常用功能:增删改查全搞定
| 功能 | 代码示例 |
| 批量插入数据(快) | user_list = ({'name':'李四','age':30}, {'name':'王五','age':28})users表.insert_many(user_list) |
| 单个插入数据 | |
| 更新数据 |
|
| 查北京用户 | 北京用户 = users表.find(city='北京')for user in 北京用户: print(user['name']) |
| 查30岁以下用户 | # 复杂条件用columns.字段名年轻用户 = users表.find(users表.table.columns.age < 30) |
| 查单条数据 | 张三 = users表.find_one(name='张三')print(f"张三年龄:{张三['age']}") |
| 删数据 |
|
| 动作 | 一句话示例 |
|---|---|
| 增 | t.insert(dict) |
| 批量增 | t.insert_many([dict,…]) |
| 改 | t.update(dict, ['key']) |
| 存在即更新 | t.upsert(dict, ['key']) |
| 删 | t.delete(column=value) |
| 查全部 | t.all() |
| 条件查 | t.find(col={'op': value}) |
| 排序 | t.find(order_by=['-col']) |
| 分页 | _limit=10, _offset=20 |
3 个避坑指南
- 1. MySQL连接失败?先装依赖
用pip install dataset[mysql]后还报错,可能是缺MySQL驱动,再装:pip install pymysql,连接地址写成:mysql+pymysql://用户名:密码@localhost/数据库名。 - 2. upsert一定要指定唯一键
用upsert时,最后要传唯一标识(比如['name']或['id']),否则会重复插入,比如:users表.upsert(数据, ['id'])。 - 3. 内存数据库(:memory:)重启就没数据
测试用sqlite:///:memory:很方便,但程序关了数据就没了,正式用要写文件路径(比如sqlite:///数据.db)。

浙公网安备 33010602011771号