Django与数据库常规操作方法

本文主要介绍了Django与数据库的操作方法,包括all()、filter()、get()等多种方法。详细说明了各方法的功能,如all()返回Queryset对象,get()返回具体对象等。还对这些方法按返回结果类型进行了总结,有返回具体对象、QuerySet对象、Boolean值和数字的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django与数据库操作方法

数据库信息

[外链图片转存失败(img-PUbpN1Ln-1562936707240)(…/图片夹/146.png)]

all()方法:返回一个 Queryset 对象,通过遍历可以将值取出。
from app import models
from django.http import HttpResponse
def test(request):
#  all()  返回一个 Queryset 对象,通过遍历可以将值取出。
    person_lst = models.App.objects.all()
    print(person_lst)
    #输出:< QuerySet[ < App: < obj: name:张三 >>, < App: < obj: name:李		四 >>,< App: < obj: name:王五 >>] >
    # 遍历取值
    print(person_lst[0].name) #张三
	return HttpResponse('查出来了!')
filter()方法:过滤,返回一个 Queryset 对象,
from django.http import HttpResponse
def test(request):
# filter():过滤,返回一个 Queryset 对象,
    person_lst = models.App.objects.filter(age=12)
    print(person_lst)
    #< QuerySet[ < App: < obj: name:李四 >>, < App: < obj: name:王五 >>] >

    # select * from app where age=12 and name="李四" ↓
    person_lst = models.App.objects.filter(age=12,name="李四") #默认and连接
    print(person_lst)
    # < QuerySet[ < App: < obj: name:李四 >>] >
    
    # 不存在 ,返回为空
    person_lst = models.App.objects.filter(age=23)
    print(person_lst)  # < QuerySet[ ] >
    print(person_lst.name)
    
    # 返回相同条件中的第一个,具体的对象
    person_lst = models.App.objects.filter(age=12).first()
    print(person_lst)   # < obj: name:李四 >

    # 返回相同条件中的最后一个,具体的对象
    person_lst = models.App.objects.filter(age=12).last()
    print(person_lst)  # < obj: name:李四 >
    
    # 如果过滤一个不存在的first 与 遍历列表的区别
    person_lst = models.App.objects.filter(age=10).first()
    print(person_lst) #None
    # 都是取第一个值first返回None ,遍历是报错
    person_lst = models.App.objects.filter(age=10)
    print(person_lst[0])  # list index out of range
    
    
    
    return HttpResponse('查出来了!')
get()方法:只能查询唯一的一个,返回的是一个具体的对象
from django.http import HttpResponse
def test(request):
	# ③ get() : 只能查询唯一的一个,返回的是一个具体的对象
	person_lst = models.App.objects.get(name="张三")
    print(person_lst)  # <obj: name:张三>
    print(person_lst.name)  # 遍历取值
	
    # # 由于只返回唯一的一个,(age=12有2个)所以报错
    # person_lst = models.App.objects.get(age=12)
    # print(person_lst) 
    # print(person_lst.name)
    
    # 不存在 ,报错
    # person_lst = models.App.objects.get(age=23)
    # print(person_lst)  
    # print(person_lst.name)
    
    return HttpResponse('查出来了!')
————————————————————————————————————————————————————————————————————————————----
 # 不确定会不会报错,为了防止程序报错可以使有以下2种方法
    # ⑴
    if person_lst: #如果不为空
        person_lst = models.App.objects.get(age=23)
    else: # 如果为空
        person_lst = models.App.objects.filter(age=23)
    # ⑵
    try: # 尝试,如果错误,走except。
        person_lst = models.App.objects.get(age=23)
    except: 
        person_lst = models.App.objects.filter(age=23)
exclude()方法:返回与筛选条件不匹配的对象
from django.http import HttpResponse
def test(request):
	# exclude() :返回与筛选条件不匹配的对象
    person_lst = models.App.objects.exclude(age=11)
    print(person_lst)
    # < QuerySet[ < App: < obj: name:李四 >>, < App: < obj: name:王五 >>] >
    
    return HttpResponse('查出来了!')
values()方法: 返回一个QuerySet对象,对象中包含的是字典的形式
from django.http import HttpResponse
def test(request):
	# ⑤ values():返回一个QuerySet对象,对象中包含的是字典的形式
    person_lst = models.App.objects.filter(age=12).values()
    print(person_lst)
    #< QuerySet[{'name': '李四', 'age': 12, 'id': 2, 'birthday':datetime.date(2019, 7, 27)},# {'name': '王五', 'age': 12, 'id': 3,'birthday':datetime.date(2019, 28)}] >
    person_lst = models.App.objects.filter(age=12).values('name')
    print(person_lst)# <QuerySet [{'name': '李四'}, {'name': '王五'}]>
    
    return HttpResponse('查出来了!')
values_list():与values()相似,返回的是一个元祖序列
from django.http import HttpResponse
def test(request):
	# ⑥values_list():与values()相似,返回的是一个元祖序列
    person_lst = models.App.objects.filter(age=12).values_list('name')
    print(person_lst) #<QuerySet [('李四',), ('王五',)]>

    return HttpResponse('查出来了!')
order_by():对查询结果排序,默认升序, - 降序
from django.http import HttpResponse
def test(request):
	# ⑦ order_by():对查询结果排序,默认升序,- 降序
    person_lst = models.App.objects.all().order_by('age')
    print(person_lst)
    #< QuerySet[ < App: < obj: name:张三 >>, < App: < obj: name:李四 >>, 
    # < App: < obj: name:王五 >>] >
    person_lst = models.App.objects.all().order_by('-age')
    print(person_lst)
    # < QuerySet[ < App: , < App: < obj: name:李四 >>, < App: < obj: name:王五 >>,
    # < obj: name:张三 >>] >
    
    return HttpResponse('查出来了!')
reverse():对查询结果进行反向排序
from django.http import HttpResponse
def test(request):
	# ⑧ reverse():对查询结果进行反向排序
    person_lst = models.App.objects.all().order_by('age').reverse()
    print(person_lst)
    # < QuerySet[ < App: < obj: name:李四 >>, < App: < obj: name:王五 >>, 
    # < App: < obj: name:张三 >>] >
    
    return HttpResponse('查出来了!')
count():返回数据库中匹配查询(Queryset)的对象数量
from django.http import HttpResponse
def test(request):
     # ⑨ count():返回数据库中匹配查询(Queryset)的对象数量
    person_lst = models.App.objects.all().count()
    print(person_lst) #3
    return HttpResponse('查出来了!')
exitsts(): 如果Queryset包含数据,返回True,否则返回Flase
from django.http import HttpResponse
def test(request):
	# ⑩ exitsts(): 如果Queryset包含数据,返回True,否则返回Flase
    person_lst = models.App.objects.exists()
    print(person_lst) #True

    return HttpResponse('查出来了!')

总结:
1.返回具体对象方法get()、first()、last()
2.返回QuerySet对象方法
all()、filter()、exclude()、order_by()、reverse()、
values() 返回一个可迭代的字典序列。
values_list() 返回一个可迭代的元祖序列。
3.返回Boolean值方法 exists()
4.返回数字的方法count()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值