• 第七章 Django框架——ORM介绍之单表操作


    第七章 Django框架——ORM介绍之单表操作

    一、增加表记录

    二、删除表记录

    三、修改表记录

    四、查询表记录

    补充:

    Django终端打印原生sql方法

    # 在settings中进行如下配置
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    }

    在Python脚本中调用Django环境

    import os
    if __name__ == '__main__':
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "untitled15.settings")
        import django
        django.setup()
    
        from app01 import models
    
        books = models.Book.objects.all()
        print(books)

    一、增加表记录

     方式一:create()推荐这种

    date类型注意:传字符串必须是:2014-5-12,也可以传datetime类型

    # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象
    book_obj=Book.objects.create(title="python",state=True,price=100,publish="上海出版社",pub_date="2012-12-12")

     方式二:save()

    book_obj=Book(title="python",state=True,price=100,publish="上海出版社",pub_date="2012-12-12")
    book_obj.save()

     

    二、删除表记录

     delete()

    (1)queryset对象可以调用

    (2)obj对象也可以调用

     

    1:总共影响的记录数量

    {‘app01.Book’}:代表影响了哪个表的记录

    1:影响这个表的记录数量

    三、修改表记录

     删除方法就是 update()

    Book.objects.filter(title__startswith="py").update(price=120)

    此外,update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录update()方法会返回一个整型数值,表示受影响的记录条数。

    对象不能调用

    四、查询表记录

    两种输出方式

     

    基本查询API(以下13种查询方式作为基础必须学会)

    (1) all()

    查询结果:queryset对象

    作用:查询所有结果

    (2) filter(**kwargs)

    查询结果:queryset对象

    作用:它包含了与所给筛选条件相匹配的对象

    sql语句对比:相当于sql的where,后面的条件都是and

    (逗号代表and)

    (3) get(**kwargs)

    查询结果:返回的是具体对象

    作用:返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。

    (4) exclude(**kwargs): 

    查询结果:queryset对象

    作用:除。。。以外的

    (5) order_by(*field): 

    查询结果:queryset对象

    作用:对查询结果排序

    用法:

    order_by('price')升序

    order_by('-price')降序

    (6) reverse(): 

    查询结果:

    作用:对查询结果反向排序

    用法:必须用在order_by以后

    备注:

    (7) count(): 

    查询结果:数字对象

    作用:返回数据库中匹配查询(QuerySet)的对象数量。

    (8) first(): 返回第一条记录

    查询结果:返回的是具体对象

    作用:返回第一条记录

    (9) last(): 

    查询结果:返回的是具体对象

    作用:返回最后一条记录

    (10) exists(): 

    查询结果:布尔值

    作用:如果QuerySet包含数据,就返回True,否则返回False

    (11) values(*field):

    查询结果:queryset对象

    作用:返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列

    sql语句对比:相当于sql中select * from book; 中的*的内容

    (12) values_list(*field): 

    查询结果:queryset对象

    作用:它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

    对比value:

    value里放字段

    values_list里放元祖

    (13) distinct(): 

     查询结果:queryset对象

     作用:从返回结果中剔除重复纪录

    总结(链式调用):

    1.返回Queryset对象的方法后面可以继续添加Queryset对象的方法,打印输出结果仍然是queryset对象

    例如:

    2.Queryset对象的方法后面一定可以点出返回具体对象的方法,打印输出结果是一条记录

    例如:

    返回QuerySet对象的方法有

    all()

    filter()

    exclude()

    order_by()

    reverse()

    distinct()

    返回特殊的QuerySet

    values()       返回一个可迭代的字典序列

    values_list() 返回一个可迭代的元祖序列

    返回具体对象的

    get()

    first()

    last()

    返回布尔值的方法有:

    exists()

    返回数字的方法有

    count()

    双下划线查询API

    (1)__startswith

    作用:以什么开头

    (2)__endswith

    作用:以什么结尾

    (3)__contains

    作用:包含...

     

    (4)__icontains

    作用:不区分大小写查询

    (5)__gt

    作用:大于

    (6)__lt

    作用:小于

    (7)__gte

    作用:大于等于

    (8)__lte

    作用:小于等于

    (9)__range

    作用:范围是多少到多少之间

    与sql比较:

    相当于sql的between

     

    (10)__in

    作用:获取指定属性为指定值的记录

    (11)__year

    作用:过滤某年1月1号到12月31号

    总结:

    双下划线属性可以连用

  • 相关阅读:
    swift
    swift
    ios
    Swift
    swift
    swift
    /var/log/cron
    Django 数据传递
    HTML 属性
    HTML 元素
  • 原文地址:https://www.cnblogs.com/neymargoal/p/9620119.html
Copyright © 2020-2023  润新知