当前位置:   article > 正文

Peewee 使用手册_peewee中文文档

peewee中文文档

Peewee 是什么

Peewee 即 Python OMR 框架之一。

如何使用

基本步骤

  • 通过 pip3 下载 peewee
  • 新建 models.py 模型文件
  • 在 models.py 中加入以下基础代码
  • 运行 models.py,在 mysql 中生成 new_record 表

连接数据库

from peewee import *
from settings import DATABASES

# 连接数据库
MYSQL_DB = MySQLDatabase(
    host=DATABASES['DEFAULT']['HOST'],
    port=DATABASES['DEFAULT']['PORT'],
    user=DATABASES['DEFAULT']['USER'],
    passwd=DATABASES['DEFAULT']['PASSWORD'],
    database=DATABASES['DEFAULT']['NAME'],
)

class BaseModel(Model):
    """基础模型类"""

    class Meta:
        database = MYSQL_DB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

创建数据表

class NewRecord(BaseModel):
    """NewRecord 模型类"""

    field_1 = CharField(max_length=10, null=True)
    field_2 = CharField(max_length=100, null=True)
    field_3 = IntegerField(default=0)
    field_4 = TextField()

    class Meta:
        db_table = 'new_record'

if __name__ == '__main__':
    # 创建表
    NewRecord.create_table()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

插入一条数据记录

new_record = NewRecord()
new_record.field_1 = "field_1"
new_record.field_2 = "field_2"
new_record.field_3 = 0
new_record.field_4 = "field_4"
new_record.save()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

获取条件过滤后的数据记录

from modules.models import NewRecord

def get_data_list():
    """获取数据列表

    :return:
    """

    data_list = []
    new_records = NewRecord.select().where(
        NewRecord.status == 0).order_by(
        NewRecord.id)

    for new_record in new_records:
        _data = {
            'field_1': new_record.field_1,
            'field_2': new_record.field_2,
            'field_3': new_record.field_3
        }
        data_list.append(_data)

    return data_list
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
多个过滤条件的方式

注意:过滤条件之间的关系不是用 and 和 or 的逻辑运算符,而是用 & 和 |。

Record.select().where(
	(Record.field_1 == value_1) & 
	(Record.field_2 == value_2))
  • 1
  • 2
  • 3

更新数据记录

def update_new_record_field_3(
        field_1, field_2,
        field_3):
    """更新特定查询数据字段 field_3

    :param field_1: 待更新 field_1
    :param field_2: 待更新 field_2
    :param field_3: 待更新 field_3
    :return:
    """

    update_instance = NewRecord.update(
        {
            NewRecord.field_3: field_3
        }
    ).where(NewRecord.field_1 == field_1
            and NewRecord.field_2 == field_2)
    update_instance.execute()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

查询单条数据记录

# 若查询不到记录会报错
_record = NewRecord.get(NewRecord.field_1 == field_1 and NewRecord.field_2 == field_2)  
print(_record.field_1, _record.field_2)
  • 1
  • 2
  • 3

删除条件过滤后的数据记录

NewRecord.delete().where(NewRecord.field_1 == field_1).execute()
  • 1

删除单条数据记录

_record = NewRecord.get(NewRecord.field_1 == field_1 and NewRecord.field_2 == field_2)
_record.delete_instance()
  • 1
  • 2

其他要点

  • 联合约束的创建
class Meta:
        db_table = 'new_record'
        constraints = [SQL('UNIQUE KEY(field_1, field_2)')]
  • 1
  • 2
  • 3
  • 日期时间的默认值
class NewRecord(BaseModel):
    """NewRecord 模型类"""
    # ...
	add_time = DateTimeField(datetime.datetime.now)

	class Meta:
        db_table = 'new_record'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 根据数据表情况生成 models.py
python -m pwiz -e mysql -H {主机地址} -p 3306  -u root -- password   {数据库名称} > {生成的代码文件 例model.py}
  • 1
  • 查询操作符 & 逻辑运算符
    查询操作符
    逻辑运算符
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/172904
推荐阅读
相关标签
  

闽ICP备14008679号