zoukankan      html  css  js  c++  java
  • 第七章 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号

    总结:

    双下划线属性可以连用

  • 相关阅读:
    古谚、评论与论断、名篇与名言
    重读《西游记》
    重读《西游记》
    命名之法 —— 时间、季节、地点
    命名之法 —— 时间、季节、地点
    文言的理解 —— 古时的称谓、别称、别名
    文言的理解 —— 古时的称谓、别称、别名
    Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
    瀑布 敏捷 文档
    POJ 1325 ZOJ 1364 最小覆盖点集
  • 原文地址:https://www.cnblogs.com/neymargoal/p/9620119.html
Copyright © 2011-2022 走看看