顾文强
顾文强
Published on 2025-02-28 / 13 Visits
0
0

Peewee 使用教程

Peewee 是一个轻量级的 Python ORM(对象关系映射)库,它提供了简单而直观的 API 来与数据库进行交互。以下是一个完整的 Peewee 使用教程,涵盖了基本的安装、数据库连接、模型定义、数据的增删改查操作等内容。

1. 安装 Peewee

可以使用 pip 来安装 Peewee:

pip install peewee

2. 连接数据库

Peewee 支持多种数据库,如 SQLite、MySQL、PostgreSQL 等。下面以 SQLite 为例进行说明:

from peewee import *

# 连接 SQLite 数据库
db = SqliteDatabase('example.db')

# 如果使用 MySQL 数据库
# db = MySQLDatabase('your_database', user='your_user', password='your_password', host='localhost', port=3306)

# 如果使用 PostgreSQL 数据库
# db = PostgresqlDatabase('your_database', user='your_user', password='your_password', host='localhost', port=5432)

3. 定义模型

模型是 Peewee 中用于表示数据库表的类。每个模型类对应一个数据库表,类的属性对应表的列。

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

class User(BaseModel):
    username = CharField(unique=True)
    email = CharField()
    age = IntegerField(null=True)

# 创建表
db.create_tables([User])

在上述代码中,我们定义了一个 User 模型,包含 usernameemailage 三个字段。CharField 表示字符串类型的字段,IntegerField 表示整数类型的字段,null=True 表示该字段可以为空。

4. 数据的增删改查操作

4.1 插入数据

# 插入单条数据
user = User(username='john_doe', email='john@example.com', age=25)
user.save()

# 另一种插入单条数据的方式
user = User.create(username='jane_smith', email='jane@example.com', age=30)

# 批量插入数据
users = [
    {'username': 'bob', 'email': 'bob@example.com', 'age': 22},
    {'username': 'alice', 'email': 'alice@example.com', 'age': 28}
]
User.insert_many(users).execute()

4.2 查询数据

# 查询所有用户
all_users = User.select()
for user in all_users:
    print(user.username, user.email, user.age)

# 根据条件查询用户
query = User.select().where(User.age > 25)
for user in query:
    print(user.username, user.age)

# 查询单个用户
try:
    user = User.get(User.username == 'john_doe')
    print(user.username, user.email)
except User.DoesNotExist:
    print("User not found")

# 统计用户数量
count = User.select().count()
print(f"Total users: {count}")

4.3 更新数据

# 更新单个用户的信息
user = User.get(User.username == 'john_doe')
user.age = 26
user.save()

# 批量更新数据
query = User.update(age=User.age + 1).where(User.age < 30)
query.execute()

4.4 删除数据

# 删除单个用户
user = User.get(User.username == 'bob')
user.delete_instance()

# 批量删除数据
query = User.delete().where(User.age > 30)
query.execute()

5. 关闭数据库连接

在程序结束时,建议关闭数据库连接:

db.close()

完整示例代码

from peewee import *

# 连接 SQLite 数据库
db = SqliteDatabase('example.db')

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

class User(BaseModel):
    username = CharField(unique=True)
    email = CharField()
    age = IntegerField(null=True)

# 创建表
db.create_tables([User])

# 插入数据
user = User(username='john_doe', email='john@example.com', age=25)
user.save()

# 查询数据
all_users = User.select()
for user in all_users:
    print(user.username, user.email, user.age)

# 更新数据
user = User.get(User.username == 'john_doe')
user.age = 26
user.save()

# 删除数据
user = User.get(User.username == 'john_doe')
user.delete_instance()

# 关闭数据库连接
db.close()

通过以上步骤,你可以掌握 Peewee 的基本使用方法,包括数据库连接、模型定义、数据的增删改查操作等。


Comment