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
模型,包含 username
、email
和 age
三个字段。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 的基本使用方法,包括数据库连接、模型定义、数据的增删改查操作等。