mymodel.objects
管理器方法调用查询对象方法 | 说明 |
---|---|
all() | 查询全部记录,返回QuerySet查询对象 |
get() | 查询符合条件的单一记录 |
filter() | 查询符合条件的多条记录 |
exclude() | 查询符合条件外的全部记录 |
Asset.objects.all()
from monitor.models import Asset
querys =Asset.objects.all()
for i in querys:
print("创建日期",i.create_date,"操作系统",i.system)
# 打印结果
创建日期 2021-06-16 13:52:14+00:00 操作系统 Centos7
select * from table
,返回QuerySet容器对象,内部存放MyModel实例可以在模型类中定义__str__
方法,字典统一queryset中输出的格式
def __str__(self):
return "创建日期:%s" "物理机信息:%s"%(self.create_date,self.physics_host)
Asset.objects.values()
select 列1,列2 from table
>>> a = Asset.objects.values("create_date")
>>> a
<QuerySet [{'create_date': datetime.datetime(2021, 6, 16, 13, 52, 14, tzinfo=<UTC>)}]>
注意这个时候取回来的值是字典的形式,需要用字典的取值方法
Asset.objects.values_list()
元组
QuerySet中
>>> a = Asset.objects.values_list("create_date")
>>> a
<QuerySet [(datetime.datetime(2021, 6, 16, 13, 52, 14, tzinfo=<UTC>),)]>
注意这个时候取回来的值是元组的形式,需要用元组的取值方法 取值方法: print(元组名[索引])
Asset.objects.order_by('-列','列')
all()
方法不同,他会用SQL语句的ORDER_BY
对查询结果根据某个字段选择性的进行排序,默认是升序格式,降序排列需要在列前增加-
表示>>> a = Asset.objects.order_by("create_date")
>>> b = Asset.objects.values("title").order_by('-price')
>>> print(a.query) # 可以使用这种方式查看发送给MySQL的查询语句
Asset.objects.filter(属性1=值1,属性2=值2)
,当多个属性在一起为与
关系# 查询数据库中 create_user为admin的
from monitor.models import Asset
info = Asset.objects.filter(create_user="admin")
for i in info:
print("查询结果",i.create_date)
# 查询数据库中 create_user为admin的并且系统为Linux的
from monitor.models import Asset
info = Asset.objects.filter(create_user="admin",system="Linux")
for i in info:
print("查询结果",i.create_date)
Asset.objects.exclude(条件)
# 查询数据库中 create_user为admin的并且系统为Linux以外的服务器信息
from monitor.models import Asset
info = Asset.objects.exclude(create_user="admin",system="Linux")
for i in info:
print("查询结果",i.create_date)
Asset.objects.get(条件)
Model.MultipleObjectsReturned
异常,如果没有查询出数据则会抛出Model.DoesNotExist
异常from monitor.models import Asset
info = Asset.objects.get(create_user="admin",system="Linux")
for i in info:
print("查询结果",i.create_date)
info = Asset.objects.filter(id__exact=1) # 等同于 select * from asset where id = 1
info = Asset.objects.filter(system__contains='linux') # 等同于 select * from asset where name like '%linux'
info = Asset.objects.filter(system__startswith='linux')
info = Asset.objects.filter(system__endswith='linux')
info = Asset.objects.filter(id__gt='50') # 等同于select * from asset where id > 50
# __gte:大于等于
# __lt:小于
# __小于等于
info = Asset.objects.filter(country__in=['中国','北京','河北']) # 等同于 select * from asset where country in ('中国','北京','河北')
info = Asset.objects.filter(age__range=(18,45)) # 等同于 select * from asset where age between 18 and 45