ORM单表操作的增删改查

增加记录

def add(request):

    # 添加记录的方法1
    # book1=Book(title="北京折叠",price="11.11",pub_date="2012-12-12",publish='苹果出版社')
    # book1.save()

    # 添加记录的方法2 create返回记录对象
    # book_obj=Book.objects.create(title="放风筝的人",price="11.11",pub_date="2017-12-12",publish='苹果出版社')
    # print(book_obj.title)
    # print(book_obj.price)
    # print(book_obj.pub_date)
   
    return HttpResponse("添加成功")

查询记录

def query(request):

    '''
    queryset:列表里存对象 调不了属性
    model对象

    :param request:
    :return:
    '''

    # 1. all()
    # book_list = Book.objects.all()  #queryset数据类型[obj,obj....]
    # print(book_list)
    # for obj in book_list:
    #     print(obj.title)

    # 2. filter() 返回的是一个queryset数据类型对象,【model_obj,model_obj】
    # ret=Book.objects.filter(title="北京折叠")
    # print(ret)

    # 3.first,last,queryset支持切片操作
    # obj1=Book.objects.all().first()
    # obj2=Book.objects.all().last()
    # # obj3=Book.objects.all()[1:2]
    # print(obj1)
    # print(obj2)
    # # obj4=Book.objects.all()[-1]

    # 4.get方法 返回的就是一个model对象,有且只有一个才有意义
    # obj =Book.objects.get(nid=1)
    # print(obj.title)

    # 5.exclude 排除 等同于filter
    # ret = Book.objects.exclude(nid=1)
    # print(ret)

    # 6.order_by排序
    # ret=Book.objects.order_by('price')
    # print(ret)

    # 7.reverse()反向排序
    # ret=Book.objects.order_by('price').reverse()

    # 8 count
    # ret=Book.objects.all().count()
    # print(ret)

    # 9 exists
    # ret=Book.objects.all().exists()
    # if ret:
    #     print('ok')
#
10 返回query,列表里套字典,每本书都是字典 # ret = Book.objects.all().values("title", "price") # print(ret) # 11 values_list 列表里套元祖 # ret = Book.objects.all().values_list('title','price') # print(ret) # 12 distinct(去重) # 单表查询之模糊查询 # Book.objects.filter(price__gt=100) # Book.objects.filter(price__lt=100) # ret=Book.objects.filter(price__lte=100) # print(ret) # Book.objects.filter(price__gte=100) # Book.objects.filter(price__in=[100,200,300]) # Book.objects.filter(price_range=[100,233]) # Book.objects.filter(title__startswith="") # Book.objects.filter(title__contains="") return HttpResponse("查询成功")

更改记录

def change(request):
    nid=1
    Book.objects.filter(nid=nid).update(price=1000)
    return HttpResponse('修改成功')

删除记录

def delbook(request,id):

    Book.objects.filter(nid=id).delete()

    return HttpResponse("删除成功")

 

点击MySQL ,下载,apply

作业1: 查询练习:

1 查询老男孩出版社出版过的价格大于200的书籍

Book.objects.filter(price__gt=200,is_pub=True,publish="老男孩出版社")
2 查询2017年8月出版的所有以py开头的书籍名称

Book.objects.filter(title__startswith="py",pub_date__year=2017,pub_date__month=8)
3 查询价格为50,100或者150的所有书籍名称及其出版社名称

Book.objects.filter(price__in=[50,100,150]).values('title','publish')
4 查询价格在100到200之间的所有书籍名称及其价格

Book.object.filter(price__range=[100,200]).values('title','price')
5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重)

Book.object.filter(publish="人民出版社").order_by("price").reverse().values('price').distinct()
6 查询价格大于200的书籍的个数

Book.object.filter(price__gt=200).count()
7 查询价格不等于100的所有书籍

Book.object.exclude(price=100)
8 查询苹果出版社出版的书籍中的第3-7本(前提存在足够数量的书籍)

Book.object.filter(publish="苹果出版社")[2:7]

 

posted on 2018-06-27 16:50  欣蔚  阅读(197)  评论(0编辑  收藏  举报