Peewee:轻量级 ORM 的秘密武器

文摘   2024-10-17 19:06   黑龙江  

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 这么好用的工具,你还不赶紧去试试?




乐意说事
阅他人故事,品百味人生,坚持日更,加油!
 最新文章