欢迎来到曹鸿源的个人站点

       
点击小屏 点击全屏

peewee 查询示例

本文主要内容是使用peewee语法做查询操作。

peewee的官方教程地址:peewee教程


main.py文件导入models.py:表可以看上篇文章:peewee 查询、更新、删除等操作

from common.models import Student, Class

1. 获取学生表所有学生

Student.select()

# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1`


2. 获取指定条件信息的学生信息,单个数据

s = Student.get(Student.id == 1)

# 会直接返回学生的信息
print(s.name)
# 小a

# 也可以这样写
s = Student.get(Student.id == 1)


3. 获取指定条件信息的学生信息,多条数据

Student.select().where(Student.name == '小a')

# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` = '小a')


4. where的使用

Student.select().where(Student.class_id == 2)
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`class_id` = 2)

# 并列条件
Student.select().where(Student.class_id == 2, Student.sex == 0)
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE ((`t1`.`class_id` = 2) AND (`t1`.`sex` = 0))

# 或者条件
Student.select().where((Student.class_id == 2) | (Student.class_id == 1))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE ((`t1`.`class_id` = 2) OR (`t1`.`class_id` = 1))

# 并列添加和或者条件一起用
Student.select().where(Student.sex == 1, (Student.class_id == 2) | (Student.class_id == 1))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE ((`t1`.`sex` = 1) AND ((`t1`.`class_id` = 2) OR (`t1`.`class_id` = 1)))

# 大于:>,小于:<,大于等于:>=,小于等于:<=
Student.select().where(Student.class_id > 1)
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`class_id` > 1)

# in 和 not in 的用法
Student.select().where(Student.id.in_([1,3]))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`id` IN (1, 3))
Student.select().where(Student.id.not_in([1,3]))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`id` NOT IN (1, 3))

# is null 和 is not null
Student.select().where(Student.name.is_null(True))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` IS NULL)
Student.select().where(Student.name.is_null(False))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` IS NOT NULL)

# like
Student.select().where(Student.name.contains('小a'))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` LIKE '%小a%')

# like 左右固定值
# 开头的值固定
Student.select().where(Student.name.startswith('小a'))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` LIKE '小a%')
# 结尾的值固定
Student.select().where(Student.name.endswith('小a'))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`name` LIKE '%小a')

# between 
Student.select().where(Student.id.between(1, 3))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` WHERE (`t1`.`id` BETWEEN 1 AND 3)


5.查询指定信息select

Student.select(Student.id, Student.name)
# SELECT `t1`.`id`, `t1`.`name` FROM `student` AS `t1`


6.join

Student.select().join(Class, on=(Student.class_id == Class.id))
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` INNER JOIN `class` AS `t2` ON (`t2`.`id` = `t1`.`class_id`)


7.order by

# 正序
Student.select().order_by(Student.id)
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` ORDER BY `t1`.`id`
# 倒序
Student.select().order_by(Student.id.desc())
# SELECT `t1`.`id`, `t1`.`name`, `t1`.`sex`, `t1`.`class_id` FROM `student` AS `t1` ORDER BY `t1`.`id` DESC


持续更新中...

喜欢这个插件?点击获取:cShare

本文链接地址,转载请标注: https://caohongyuan.cn/article/160


上一篇:页面展示格式化的 Json 数据

下一篇:peewee 查询、更新、删除等操作

(邮箱不会公开,只会做回复通知用) 提交 清空 {{comment.content}}
Re:{{response.content}}