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状态
浙公网安备 33010602011771号