Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


peewee 使用手册

📄字数 1.5K
👁️阅读量 加载中...

peewee 是一个小巧而灵活的 Python ORM 框架,本文档将介绍 XuguDB 对 peewee 框架的适配情况,并提供使用 peewee 开发 XuguDB 应用的 Demo 指南。

框架名称适配起始版本官网地址源框架下载地址XuguDB框架下载demo程序地址
peewee3.17.1peewee官网peewee官方下载版本发布列表xugu-peewee

提示

其他适配版本可详见版本发布列表

一、方言包使用说明

下载 XuguDB 方言压缩包并解压后,将得到的 xgpeewee 目录与 XuguDB 驱动包一同放置于应用启动文件同级目录下。在应用程序入口导入 XuguDB 方言包即可进行 XuguDB peewee 应用的正常开发。

python
# 导入 XuguDB peewee 方言包
from xgpeewee import *

二、连接示例程序

本章节将介绍如何在 peewee ORM 框架中连接 XuguDB ,并演示包括创建连接、建立数据表、执行数据插入、更新、查询以及删除在内的核心数据库操作。

2.1 前提条件

  • 已安装 Python 3.x 。
  • 计算机已部署 XuguDB 12.0.0 或有能连接访问的虚谷数据库实例。

2.2 操作步骤

  1. 获取 XuguDB 连接信息。
  2. 安装 peewee 库。
  3. 编写 peeweedemo.py 文件,填入数据库连接信息。
  4. 运行 peeweedemo.py 文件。

2.2.1 修改 peeweedemo.py 文件,编写数据库连接信息

根据 XuguDB 连接信息修改 Demo 项目 peeweedemo.py 文件,填入数据库连接信息。

python
from peewee import *
from xgpeewee import *

# 创建xugu peewee database
database = XuguDatabase(database='SYSTEM', user='SYSDBA', password='SYSDBA', host='192.168.2.216', port=5138)

定义模型代码,并初始化创建数据库表。

python
class User(Model):
    name = CharField()
    age = IntegerField()

    class Meta:
        database = database


database.create_tables([User])

实践数据的插入(Insert)、更新(Update)、查询(Select)和删除(Delete) 等关键操作。

python
user = User(name='John', age=25)
user.save()

# 更新用户的年龄
user = User.get(User.name == 'John')
user.age = 30
user.save()
print(user.id,user.name, user.age)


# 删除用户
user = User.get(User.name == 'John')
user.delete_instance()

# 批量插入

data = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 30},
    {'name': 'Charlie', 'age': 35}
]

with database.atomic():  # 使用事务批量插入数据
    User.insert_many(data).execute()

# 查询所有用户
users = User.select()
for user in users:
    print(user.id,user.name, user.age)

User.delete().execute()

2.2.2 运行 peeweedemo.py 文件

打开命令提示符或 PowerShell 终端,运行 peeweedemo.py 文件,查询数据并输出结果。

python
python peeweedemo.py

返回结果如下:

cmd
1 John 30
2 Alice 25
3 Bob 30
4 Charlie 35

三、常见问题&解决办法

在使用 peewee 连接 XuguDB 时,可能会遇到各种错误。以下是一些常见的错误及其处理方法:

  • xgcondb 包不存在:xgcondb 包与 xgpeewee 包不在同一级别目录,导致包导入失败。

  • N + 1 问题 : 使用 prefetch() 和 join() 减少嵌套循环,使用 Peewee 的日志记录功能查看实际执行的 SQL 语句,找出不必要的查询。