zoukankan      html  css  js  c++  java
  • 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命令中的管道操作。

      

      

  • 相关阅读:
    超级详细Tcpdump 的用法
    Javascript网站繁简转换解决方案
    IIS6.0下创建用户隔离模式FTP站点
    如何开启IIS里的FTP主动模式(PASV模式)
    C#正则表达式小结
    ServU权限提升再提升记一次虚拟主机入侵
    Linux命令网络操作之ifconfig
    创建使用 Active Directory 模式隔离用户的新 FTP 站点
    远程控制电脑创建影子帐户(后门)
    Linux shell编程笔记总结
  • 原文地址:https://www.cnblogs.com/xz1024/p/6071816.html
Copyright © 2011-2022 走看看