实训记录(六)


标点啄木鸟-后端

数据库连接

登录后界面mainPage
在这里插入图片描述

1 创建记录

方法一:实例化(调用save()方法之前,Django不会访问数据库;save()方法没有返回值)

from apps.models import Author
author = Author(last_name=‘fe_cow’)
author.save()
print author

方法二:create() (只用一条语句创建并保存一个对象,使用create()方法。)

Author.objects.create(first_name=‘fe’,last_name=‘cow’, email=‘280773872@qq.com’)

方法三:get_or_create(), 这种方法可以防止重复(速度稍慢,因为会先查数据库), 它返回一个元组。创建成功返回True,失败的话False,不执行创建。

author = Author.objects.get_or_create(last_name=‘fe_cow’)
print author
(<Author: fe_cow>, False) # False:说明已经重复 创建失败

author = Author.objects.get_or_create(last_name=‘cu_cow’)
print author
(<Author: cu_cow>, True) # True: 创建成功

2 查询记录

方法一:查询所有对象 (all()方法返回包含数据库中所有对象的一个查询集。)

author = Author.objects.all()
print author
<QuerySet [<Author: fecow>, <Author: fe_cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: cu_cow>]>

方法二:过滤查询 (filter()返回一个新的查询集,它包含满足查询参数的对象。)

author = Author.objects.filter(last_name=‘cu_cow’)
print author
<QuerySet [<Author: cu_cow>]>

方法三:指定查询 (get查询只能返回一个对象,多了少了都会引发DoesNotExist 异常)

author = Author.objects.get(id=1)
print author
fecow

方法四:双下划线查询__;__contains:包含;__icontains不区分大小写;__regex:正则查询;__lt:小于xxx;__lte:小于等于xxx;__gt:大于xxx;__gte:大于等于xxx;__startswith(): 以xxx开头,;__istartswith():不区分大小写以xxx开头, __endswith():以xxx结尾;__iendswith():以xxx结尾不区分大小写

以上使用方法基本上都一致:对象.objects.filter(属性 __xxx) 例子如下:

author = Author.objects.filter(id__gte=2)
print author
<QuerySet [<Author: fe_cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: cu_cow>]>
单独说一个特殊的__in 判断字段在列表内。通常用pk指主键,不限于id,适用更好。

author_list = Author.objects.values_list(‘id’, flat=True)
返回的是:<QuerySet [1L, 2L, 3L, 4L, 5L, 6L, 7L]>

Author.objects.filter(pk__in=author)
<QuerySet [<Author: fe_cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: cu_cow>]>

方法五:first(), last()获取查询结果中单个对象

Author.objects.filter(id__gte=2)
#返回结果:QuerySet集合
<QuerySet [<Author: fe_cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: fe cow>, <Author: cu_cow>]>

Author.objects.filter(id__gte=2).first()
返回结果:objects对象 而且返回第一个对象
<Author: fe_cow>

Author.objects.filter(id__gte=2).last()
<Author: cu_cow>
返回结果:objects对象 而且返回的是最后一个对象

方法六:通过values查询

values(‘字段’)用字典形式,返回的是指定字段的查询结果;

Author.objects.values(‘last_name’)
<QuerySet [{‘last_name’: u’fecow’}, {‘last_name’: u’fe_cow’}, {‘last_name’: u’cow’}, {‘last_name’: u’cow’}, {‘last_name’: u’cow’}, {‘last_name’: u’cow’}, {‘last_name’: u’cu_cow’}]>
返回字典列表;多个字段间以逗号分隔
values_list(‘字典’),返回的也是指定字段的查询结果

Author.objects.values_list(‘last_name’)
<QuerySet [(u’fecow’,), (u’fe_cow’,), (u’cow’,), (u’cow’,), (u’cow’,), (u’cow’,), (u’cu_cow’,)]>
返回的是元组列表,多个字段也是用逗号分割

values_list(‘字段’, flat=True) flat=True :之后返回的是值列表

Author.objects.values_list(‘id’, flat=True)
<QuerySet [1L, 2L, 3L, 4L, 5L, 6L, 7L]>
返回的是列表

方法七:exists()

Author.objects.filter(id=2).exists()
True
QuerySet包含数据返回True

Author.objects.filter(last_name=‘Au_cow’).exists()
False
QuerySet不包含数据返回False

3 修改记录

QuerySet.update(‘字段’=‘修改的值’)

Author.objects.filter(last_name=‘cu_cow’).update(last_name=‘Ai_cow’)
1L
修改的前提是先查找,然后调用update(field=val)方法,只有QuerySet集合对象才能调用该方法,也就是说通过get(), first(), last()获取的对象没有该方法。
在这里插入图片描述

修改记录

下一步工作

在这里插入图片描述
在这里插入图片描述
完成所有查询修改流程
优化查找效率(优化索引结构等)
添加超级管理员对教师信息的统一导入
整合前端设计的登录界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值