Peewee:轻量级 Python ORM 框架全面解析

目录

Peewee:轻量级 Python ORM 框架全面解析

一、什么是 Peewee?

二、快速入门示例

1. 安装

2. 定义模型

3. 初始化数据库

4. 数据增删查改

三、进阶用法

1. 一对多关系

2. 查询构造器

3. 事务处理

四、与 SQLAlchemy 的对比

五、适用场景

六、总结


Peewee:轻量级 Python ORM 框架全面解析

在现代 Web 开发或数据应用中,ORM(对象关系映射)极大地简化了数据库操作。对于 Python 开发者来说,Django ORM 和 SQLAlchemy 可能耳熟能详,而 Peewee 则是一个兼具 轻量、易用、高效 的 ORM 框架,尤其适合中小项目、嵌入式系统或脚本自动化使用。

一、什么是 Peewee?

Peewee 是一个用于 Python 的 ORM 框架,它支持多种数据库(如 SQLite、PostgreSQL、MySQL 等),主打“简单而强大”的设计哲学。

特点如下:

  • ✅ API 直观、易学

  • ✅ 支持模型定义、查询构造、关系管理等全套功能

  • ✅ 支持事务、连接池、原生 SQL 执行

  • ✅ 开箱即用,依赖极少

官网地址:https://docs.peewee-orm.com

二、快速入门示例

1. 安装

pip install peewee

2. 定义模型

from peewee import *

db = SqliteDatabase('my_app.db')  # 支持 MySQLDatabase、PostgresqlDatabase 等

class BaseModel(Model):
    class Meta:
        database = db

class User(BaseModel):
    username = CharField(unique=True)
    is_active = BooleanField(default=True)

3. 初始化数据库

db.connect()
db.create_tables([User])

4. 数据增删查改

# 新增
user = User.create(username='alice')

# 查询
user = User.get(User.username == 'alice')

# 更新
user.is_active = False
user.save()

# 删除
user.delete_instance()

三、进阶用法

1. 一对多关系

class Tweet(BaseModel):
    user = ForeignKeyField(User, backref='tweets')
    content = TextField()
    timestamp = DateTimeField()

2. 查询构造器

# 查询所有活跃用户
active_users = User.select().where(User.is_active == True)

# 查询 tweet 内容包含 'hello' 的记录
tweets = Tweet.select().where(Tweet.content.contains('hello'))

3. 事务处理

with db.atomic():
    User.create(username='bob')
    Tweet.create(user=user, content='first tweet', timestamp=datetime.now())

四、与 SQLAlchemy 的对比

特性PeeweeSQLAlchemy
学习曲线平缓陡峭
依赖
查询表达式简洁更灵活
关系管理支持支持
性能
使用场景中小项目中大型系统

五、适用场景

  • CLI 工具、脚本中对 SQLite 的快速操作

  • 嵌入式系统(如树莓派)中的数据库模块

  • 资源受限场景中的轻量级 Web 应用

  • 学习 ORM 概念时的入门选择

六、总结

Peewee 是一个真正“够用、好用、易用”的 ORM 框架。它让开发者可以专注于业务逻辑而非 SQL 拼接。如果你正在寻找一个介于 “手写 SQL” 和 “重量级 ORM” 之间的平衡方案,不妨试试 Peewee。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值