查询所有数据
User.objects.all()
SQL
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user LIMIT 21;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user LIMIT 21;
查询tb_user表中的字段id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email ,并返回第0-21条记录
查询结果
条件过滤查询
查询布尔类型的数据
User.objects.filter(is_superuser=1)
SQl
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user WHERE tb_user .is_superuser LIMIT 21;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user WHERE is_superuser` LIMIT 21
结果
使用WHERE来筛选数据库中值为1(或者python中代表为True)的值的记录
数据库中值为0(或者python中代表为False)的值的记录使用WHERE NOT来筛选例如
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user WHERE NOT is_superuser LIMIT 21
结果
和上面sql的区别只有WHERE NOT,其他部分完全一样
查询值非布尔类型的数据
User.objects.filter(username='123456')
SQL
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user WHERE tb_user .username = ‘123456’ LIMIT 21;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user WHERE username = ‘123456’ LIMIT 21;
结果
和上面类似使用WHERE来筛选数据,不过不一样的是使用 列名=值 来筛选具体的数据
条件查询-单值
User.objects.get(username='123456')
SQL
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user WHERE tb_user .username = ‘123456’ LIMIT 21;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user WHERE username = ‘123456’ LIMIT 21;
和上面的filter方法一样,不过查询的值结果只能有一条数据,数据量多于一个就会报错
排序查询
User.objects.order_by('username')
sql
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user ORDER BY tb_user .username ASC LIMIT 21;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user ORDER BY username ASC LIMIT 21;
使用ORDER BY来指定使用username列为排序的对象,指定ASC为降序排序,降序在python中的字段名称前加-号即可,sql中即是将ASC修改成DESC
限制返回数据
也可以用于分页查询
User.objects.order_by('username')[0:2]
SQL
SELECT tb_user .id , tb_user .password , tb_user .last_login , tb_user .is_superuser , tb_user .username , tb_user .first_name , tb_user .last_name , tb_user .is_staff , tb_user .is_active , tb_user .date_joined , tb_user .email FROM tb_user ORDER BY tb_user .username ASC LIMIT 2;
简化
SELECT id ,password ,last_login , is_superuser ,username ,first_name , last_name , is_staff , is_active , date_joined , email FROM tb_user ORDER BY username ASC LIMIT 2;
使用limit 限制数据库的返回的数据数量,可以指定从第几个数据开始到第几个数据结束 等之后有空也把保存,更新删除对应的sql也找一下,感兴趣的可以关注一下,有什么问题都可以留言讨论哦
|