Python3学习笔记之十九
1. 什么是orm?
object relation mapping 对象关系映射
一旦确定表关系为一对多:在多的表中添加关联字段。
一对一:可以在任意一张表添加关联字段。
多对多:创建第三张表,主键id,两个关联字段,关联另外两张表的主键。
添加记录:
# 方式1: #obj=Book.objects.create(title="python",publishDate="2012-12-12",price=100) 注意:Book.objects.create()的返回值是当前添加的记录对象 # 方式2: book_obj=Book(title="python2",publishDate="2012-12-12",price=100) book_obj.save()
查询记录:
<1> all(): 查询所有结果(queryset) <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象(queryset) <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误。 (model对象) <5> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 <4> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列 <9> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列 <6> order_by(*field): 对查询结果排序 <7> reverse(): 对查询结果反向排序 <8> distinct(): 从返回结果中剔除重复纪录 <10> count(): 返回数据库中匹配查询(QuerySet)的对象数量。 <11> first(): 返回第一条记录 <12> last(): 返回最后一条记录 <13> exists(): 如果QuerySet包含数据,就返回True,否则返回False
双下划线的查询:
book_list=Book.objects.filter(price__gt=60)
book_list=Book.objects.filter(price__lt=60)
book_list=Book.objects.filter(title__contains="py")
book_list=Book.objects.filter(title__startswith="python")
book_list=Book.objects.filter(price__in=[60,70,100])
book_list=Book.objects.filter(price__range=[50,99])
删除记录,更新记录
删除: Book.objects.filter().delete() # 默认级联删除 更新: Book.objects.filter().update(price=50,.....)
2. 跨表操作:
一往无前虎山行,拨开云雾见光明