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)
单个插入数据 user_list = ({'name':'李四','age':30})
users表.insert(user_list)
更新数据
# 按主键改(已知 id=3)
t.update({'id': 3, 'age': 30}, ['id'])

# 按条件改:把所有 age<25 的 age+1
t.update({'age': db['person'].table.c.age + 1},  # 字段自增
         where={'age': {'<': 25}})

# 存在就更新,不存在就插入(唯一键冲突时替换)
t.upsert({'name': 'Alice', 'age': 99}, ['name'])  # name 为唯一键
查北京用户 北京用户 = 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']}")
删数据

users表.delete(name='张三') # 按条件删

users表.delete() # 全表清空(慎重使用) 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

动作一句话示例
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)。
posted @ 2025-10-16 16:11  北京测试菜鸟  阅读(8)  评论(0)    收藏  举报