版权声明:如需发表此文章,请附带转载标志或原地址链接,谢谢合作 https://blog.csdn.net/weixin_38091140/article/details/84138490
今天就讲讲关于双下划线的操作,这是第二篇关于orm相关操作的文章,还想看请往上翻第一篇。
# -*- coding: utf-8 -*-
# @Time : 2018/11/15 19:26
# @Author : lh
# @Email : .com
# @File : orm_test.py
# @Software: PyCharm
"""
ORM小总结
前面讲解了如何在一个python脚本或者文件中假装Django项目的配置和变量信息
"""
import os
if __name__ == '__main__':
# 加载Django项目的配置信息
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Django_test1.settings")
# 导入Django项目,并且启动项目
import django
django.setup()
# 导入你需要的models
from users import models
# # 使用.all()方法进行查询所有的书籍
# print('.all()'.center(100, '#'))
# ret = models.Books.objects.all()
# print(ret)
#
# #使用.filter()方法进行筛选查询
# print('.filter()'.center(100, '#'))
# ret = models.Books.objects.filter(id=1) # 使用filter() 比使用get()方法要好,如果数据不存在就返回空,不会报错
# print(ret)
#
# # 使用exclude()方法进行查询,他返回与所给筛选条件不匹配的对象
# print('.exclude()'.center(100, '#'))
# ret = models.Books.objects.exclude(id=1)
# print(ret)
#
# # 使用values()方法进行查询, 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
# print('.values()'.center(100, '#'))
# ret = models.Books.objects.values() #如果返回空的字段,默认返回所有的数据。也可以加字段(.values('name'))
# print(ret)
#
# print("values_list".center(100, "#"))
# # # values_list 返回一个QuerySet对象,里面都是元祖。 不写字段名,默认查询所有字段
# ret = models.Books.objects.values_list()
# print(ret)
#
# print("count".center(100, "*"))
# # # count 返回QuerySet中对象的数量
# ret = models.Books.objects.all().count()
# print(ret)
#
# print("first".center(100, "*"))
# # # first 返回QuerySet中第一个对象
# ret = models.Books.objects.all().first()
# print(ret)
#
# print("last".center(100, "*"))
# # # last 返回QuerySet中最后一个对象
# ret = models.Books.objects.all().last()
# print(ret)
#
# print("exists".center(100, "*"))
# # # exists 判断表里有没有数据
# ret = models.Books.objects.exists()
# print(ret)
# 双下划綫查询
ret = models.Author.objects.filter(id__gt=1 , id__lt=10) # 获取id大于1而且小于10的值
print(ret)
print('id__in'.center(100, '!'))
ret = models.Author.objects.filter(id__in=[6, 7, 22]) # 获取id为6,7,22的值
print(ret)
ret = models.Author.objects.filter(name__contains='小') # 获取名字字段包含小的值
print(ret)
ret = models.Author.objects.filter(id__range=[1, 10]) # 获取id范围1~10的所有值,相当于sql的bettwen and
print(ret)
输出结果: