django的增删改查

1、查询操作

login_testinfo表(TestInfo)

 pay_payinfo表(PayInfo)

单表查询

# 如果ID不存在,则提示错误:TestInfo matching query does not exist.
# get查询出多条记录,则提示错误:get() returned more than one TestInfo -- it returned 2
testInfo1 = TestInfo.objects.get(id=123)
# 查询列表
testInfo = TestInfo.objects.all()
# 指定条件查询,如果查询不到不会报错,多条则返回list,可以多个查询条件组合查询
testInfo2 = TestInfo.objects.filter(setCode='code2').filter(setValue='name2')
# 求count 
testInt = TestInfo.objects.count() 
#排除,类似于not 
testInfo2 = TestInfo.objects.exclude(id=2222)

F对象

# 使用2个字段作为对比的查询
testInfo4 = PayInfo.objects.filter(payValue__gte=F('sellValue'))

 Q对象

# Q对象 或(|)、与(&)、not(~)关系
testInfo6 = PayInfo.objects.filter(Q(payValue__gt=90) | Q(setCode='code2'))
testInfo6 = PayInfo.objects.filter(Q(payValue__gt=90) & Q(setCode='code2'))
testInfo6 = PayInfo.objects.filter(~Q(payValue__gt=90) & Q(setCode='code2'))

 聚合函数

# 聚合函数使用aggregate关键字
# 语法形式:aggregate(XX('字段'))  --XX为聚合函数名,例如sum
# 注意返回字典得key是字段+函数名(小写)
testInfo6 = PayInfo.objects.aggregate(Sum('sellValue'))

 排序

# 排序使用order关键字,默认使用升序排序,再排序字段前面加负号,表示倒叙排序
testInfo6 = PayInfo.objects.filter(Q(payValue__gt=90) | Q(setCode='code2')).order_by('payValue', '-sellValue')

 关联查询

# 通过明细表条件,查询主表数据
testInfo7 = TestInfo.objects.filter(payinfo__payCode='code3')
# 模糊查询 通过明细表条件查询主表数据
testInfo1 = TestInfo.objects.filter(payinfo__payCode__contains='code')
print("===", testInfo7)
# 通过主表条件查询明细表数据
payInfo2 = PayInfo.objects.filter(login__setCode='setcode')
print("===", payInfo2)

 分页

login1 = TestInfo.objects.all()
p = Paginator(login1, 2)
print("所有页面中对象的总数:", p.count)
print("总页数:", p.num_pages)
print("页码迭代器:", p.page_range)
login2 = p.get_page(1)
print("查询数据页上的对象列表:", login2.object_list)
print("此页面上从1开始页码:", login2.number)
print("如果有下一页则返回True:", login2.has_next())
print("如果有上一页则返回True:", login2.has_previous())
print("如果有下一页或上一页,则返回True:", login2.has_other_pages())
print("判断下页是否存在,如果不存在报错,存在则返回下一页编码:", login2.next_page_number())  # 如果django.core.paginator.EmptyPage: 本页结果为空
print("判断上页是否存在,如果不存在报错,存在则返回上一页编码:", login2.previous_page_number())  # 如果django.core.paginator.EmptyPage: 本页结果为空

 

2、新增操作

方式一:使用save

注意,一定要使用save()方法进行保存,如果key存在,会默认进行更新操作不会报错。

 

方式二:使用create

注意:如果key重复,会提示错误【Duplicate entry '4444' for key 'PRIMARY'】

 

3、修改操作

方式一:

 

 

方式二:

 

 

4、删除操作

方式一:

方式二:

 

 

 

 

数据库操作单元测试

       pycharm的shell中使用django的语法进行数据库操作

       通过终端进入到根目录,然后执行【python manage.py shell】,就可以运行python查询修改等sql代码。

例如:

>>> from login.models import TestInfo
>>> TestInfo.objects.all().values()

如果不需要操作了,使用exit()退出shell状态

 

posted on 2022-07-06 23:36  猫狗一家亲  阅读(405)  评论(0)    收藏  举报

导航