# -*- coding: UTF-8 -*- ''' 在Python脚本中调用Django环境 ''' import os if __name__ == '__main__': # 加载 Django项目的配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myweb.settings") # 导入Django并启动 import django django.setup() from appweb import models # 查询 get print(models.Person.objects.all()) # 查询所有 print(models.Person.objects.get(id=1)) # 蔺要红 get方法如果不存在会报错 print(models.Person.objects.get(name="钢铁侠")) # 钢铁侠 (models里的__str__ return) # 查询 filter 返回的是一个列表对象 print(models.Person.objects.filter(id=100)) # filter 如果不存在 返回 ,不存在不会报错 print(models.Person.objects.filter(name="钢铁侠")) # ]> 返回的是一个对象 print(models.Person.objects.filter(id=1)[0]) # 蔺要红 #要用索引的方式:[0] 取出第一个元素 print(models.Person.objects.filter(id__gt=1)) # 查询 id >1 , , ]> # exclude 排除 print(models.Person.objects.exclude(id=2)) # 排除id=2的 # values 返回 QuerySet对象--列表,返回值是字典,不写字段名,默认查询所有字段 print(models.Person.objects.values("name", "birthday")) # values_list 返回 QuerySet对象--列表,返回值是元祖,不写字段名,默认查询所有字段 print(models.Person.objects.values_list("name", "birthday")) # order_by 对查询结果排序 print(models.Person.objects.all().order_by("birthday")) # reverse(): 对查询结果反向排序,*****只能将一个有序的QuerySet 反正顺序 # 请注意reverse() 通常只能在具有已定义顺序的QuerySet上调用 # 01--调用order_by()方法 print(models.Person.objects.all().order_by("birthday").reverse()) ''' 02--在model类的Meta中指定ordering 这个了解即可,只用上面一种方法即可 class Meta: ordering = ("birthday",) print(models.Person.objects.all().reverse()) ''' # distinct(): 从返回结果中剔除重复纪录 # (如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。 # 此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。) # count(): 返回数据库中匹配查询(QuerySet) 的对象数量 print(models.Person.objects.all().count()) # first(): 返回第一条记录 print(models.Person.objects.all().first()) # last(): 返回最后一条记录 print(models.Person.objects.all().last()) # exists(): 判断表里是否有数据,没什么鸟用,就返回True,否则返回False print(models.Person.objects.exists())