文章目录
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
创建数据表
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()
插入一条数据记录
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()
获取条件过滤后的数据记录
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
多个过滤条件的方式
注意:过滤条件之间的关系不是用 and 和 or 的逻辑运算符,而是用 & 和 |。
Record.select().where(
(Record.field_1 == value_1) &
(Record.field_2 == value_2))
更新数据记录
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()
查询单条数据记录
# 若查询不到记录会报错
_record = NewRecord.get(NewRecord.field_1 == field_1 and NewRecord.field_2 == field_2)
print(_record.field_1, _record.field_2)
删除条件过滤后的数据记录
NewRecord.delete().where(NewRecord.field_1 == field_1).execute()
删除单条数据记录
_record = NewRecord.get(NewRecord.field_1 == field_1 and NewRecord.field_2 == field_2)
_record.delete_instance()
其他要点
- 联合约束的创建
class Meta:
db_table = 'new_record'
constraints = [SQL('UNIQUE KEY(field_1, field_2)')]
- 日期时间的默认值
class NewRecord(BaseModel):
"""NewRecord 模型类"""
# ...
add_time = DateTimeField(datetime.datetime.now)
class Meta:
db_table = 'new_record'
- 根据数据表情况生成 models.py
python -m pwiz -e mysql -H {主机地址} -p 3306 -u root -- password {数据库名称} > {生成的代码文件 例model.py}
- 查询操作符 & 逻辑运算符