• python django框架学习笔记(三)--大结局


    一、数据库同步操作技巧

      1、认识一个目录

      目录名:migatations

      作用,用来存放通过makemigrations命令生成的数据库脚本。app目录下必须要有migrations目录切目录下必须要有__init__.py才能正常的使用数据库同步功能。

      2、认识一张数据表(django_migrations)

      表中的字段:

      app:app名字

      name:脚本的文件名称

      applied:脚本执行时间

      3、数据库相关的命令

      flush:清空数据库-恢复数据库到最初的状态

      makemigrations:生成数据库同步的脚本

      migrate:同步数据库

      showmigrations:查看生成的数据库同步脚本

      sqlflush:查看生成清空数据库的脚本

      sqlmigrate:查看数据库同步的SQL语句

      一些笨拙的解决办法:开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决办法一是分析生成的数据库脚本和django_migrations中的同步记录是否匹配,另一个简单粗暴的方法就是把migrations目录下的脚本(除__init__.py)之外全部删掉,再把数据库删掉之后创建一个新的数据库,数据库同步操作再重新做一遍。(慎用)


    二、ORM常用操作

      1、增加

      create和save方法 

      objects:这是model默认管理器,create是这个管理器里面的方法

      插入主外键关系的时候,可以用对象的方式,也可以直接以关联id的方式。

      插入多对多管理的时候要分布操作。

      save方法是model对象的方法 

      2、修改

      update和save方法

      update方法是QuerySet对象的方法

        3、查询(惰性机制)

      所谓惰性机制:Publisher.objects.all()只是返回了一个QuerySet(查询结果集对象),并不会马上执行sql,而是当调用QuerySet的时候才执行

      4、删除

      delete方法

      django中删除模式是级联删除


    三、查询常用API

      django.db.models.query.QuerySet

      QuerySet的特点:

      1、是可迭代的。2、可切片

      

      查询相关的API:

      1、get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结果有且只有一个。如果符合筛选条件的对象超过一个,就会抛出MultipleObjectsReturned一场,如果没有找到符合筛选条件的对象,就会抛出DoesNotExist异常.

      2、all():查询所有结果

      3、filter(**kwargs):它包含了与所给的筛选条件相匹配的对象。

      4、exclude(**kwargs):它包含那些与所给筛选条件

      5、order_by(*fields):对查询结果排序

      6、reverse():对查询结果反向排序

      7、distinct():从返回结果中剔除重复记录

      8、values(*fields):返回一个ValuesQuerySet--一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列。

      9、values_list(*fields):它与values()非常相似,只不过后者返回的结果是字段序列,而values_list()返回的结果是元祖序列。

      10、count():返回数据库中匹配查询(QuerySet)的对象数量

      11、first():返回第一条记录,等价于[::-1][0]

      12、last():返回最后一条记录,等价于[::-1][0]

      13、exist():如果QuerySet包含有数据,就返回True,否则返回False。

      更多:http://docs.djangoproject.com/en/1.9/ref/models/querysets/

     


     

      多表查询技巧:

      _:两个下划线可以生成连接查询,查询关联的字段信息

      _set:提供了对象访问相关联表数据的方法。但是这种方法只能是相关类访问定义了关系的类(主键类访问外键类)

      聚集查询和分组查询:

      1、annotate(*args,**kwargs):可为QuerySet中每个对象添加注解。可以通过计算查询结果中每个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和,等等)用于分组查询。

      2、aggregate(*args,**kwargs):通过对QuerySet进行计算,返回一个聚合值的字段。aggregate()中每个参数都指定一个包含在字段中的返回值。用于聚合查询。

      聚合函数(Aggregation Functions):

      所在位置:Django.db.models

      1、Avg:返回所给字段的平均值

      2、Count:根据所给关联字段返回被关联model的数量

      3、Max:返回所给字段的最大值

      4、Min:返回所给字段最小值

      5、Sum:计算所给字段值的总和

      

      使用原生SQL:

      1、extra:结果集修改器,一种提供额外查询参数的机制。

      2、raw:执行原始SQL并返回模型实例

      3、直接执行自定义SQL

      (第三种方式完全不依赖model,前面两种方式还要依赖于model)


    四、常用模版标签及过滤器

      1、模版的组成

      HTML代码+逻辑控制代码

      2、逻辑控制代码的组成

      (1)变量(使用双大括号来引用变量)

      {{var_name}}

       (2)标签(tag)的使用(使用大括号和百分号的组成来标识使用tag)

        {%load staticfiles%}

       (3)过滤器(filter)的使用
        {{ship_date|date:"Fj,Y"}},ship_date变量传给data过滤器,data过滤器通过使用“Fj,Y”这几个参数来格式化日期数据。“|”代表类似Unix命令中的管道操作。

      

      

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/xz1024/p/6071816.html
Copyright © 2020-2023  润新知