Python 的世界里,操作数据库可不是啥难事。直接写 SQL 语句总觉得有点 low。今天咱们就来聊聊 Peewee ,这个轻量级的 ORM(对象关系映射)库。它就像是你和数据库之间的翻译官,让你用 Python 对象来操作数据库,不用再写那些繁琐的 SQL 语句了。
安装 Peewee
安装 Peewee 简直不要太简单,一行命令搞定:
pip install peewee
装好了就可以开始玩耍了。
连接数据库
先来看看怎么连数据库:
from peewee import *
# 连接 SQLite 数据库
db = SqliteDatabase('my_database.db')
这里用的是 SQLite,适合小型项目。要是你想整点大活,MySQL 或 PostgreSQL 也不在话下。
定义模型
有了数据库连接,接下来就是定义模型了。模型就是数据库表在 Python 中的映射:
class User(Model):
name = CharField()
email = CharField(unique=True)
age = IntegerField()
class Meta:
database = db # 指定使用哪个数据库
看到没,这就是一个 User 表,里面有 name、email 和 age 三个字段。
温馨提示:别忘了在 Meta
类里指定数据库,不然 Peewee 不知道往哪儿存数据去。
创建表
定义好模型后,咱们得告诉数据库:兄弟,给我建个表:
db.connect()
db.create_tables([User])
这两行代码一敲,数据库里就多了个 User 表。
增删改查
现在咱们来整几个常用操作:
插入数据
new_user = User.create(name='小明', email='xiaoming@example.com', age=18)
就这么简单,一个新用户就被塞进数据库了。
查询数据
# 查询所有用户
all_users = User.select()
# 查询特定用户
xiaoming = User.get(User.name == '小明')
# 条件查询
young_users = User.select().where(User.age < 30)
Peewee 的查询语法贼简单,跟写 Python 代码一样。
更新数据
User.update(age=19).where(User.name == '小明').execute()
这行代码就把小明的年龄改成 19 了。
删除数据
User.delete().where(User.name == '小明').execute()
这下小明彻底从数据库里消失了。
高级玩法
Peewee 还有不少高级功能,比如说:
外键关系
class Post(Model):
user = ForeignKeyField(User, backref='posts')
title = CharField()
content = TextField()
class Meta:
database = db
这样就建立了 User 和 Post 之间的一对多关系。
查询优化
# 使用 join 查询
query = (Post
.select(Post, User)
.join(User)
.where(User.name == '小明'))
for post in query:
print(f“{post.user.name} 写了 '{post.title}'”)
这个查询一次性把用户和文章的数据都拿到了,省得再去查用户信息。
温馨提示:用 join
可以大大减少数据库查询次数,提高性能。
Peewee 还有很多有趣的特性,比如事务支持、原始 SQL 执行、模型继承等等。它虽然小巧,但功能一点不含糊。
用 Peewee 操作数据库,就像是跟老朋友聊天一样自在。不用再为那些又臭又长的 SQL 语句发愁了。学会了 Peewee,你就能轻松驾驭各种数据库操作,让你的 Python 项目更上一层楼。
好了,今天就聊到这。Peewee 这么好用的工具,你还不赶紧去试试?