django 建立安全索引
上篇记录使用“CONCURRENTLY” 命令行执行不锁表索引,对于django, 如何执行呢?这里记录一种方法,修改django迁移文件。
在执行完迁移后,为了方便找到该迁移文件,可以采用指定命名迁移
- python manage.py makemigrations --name=add_index_separate_database_and_state app01
对应app/migrations文件夹自动生成mitration文件,例如:
- # migrations/0002_add_index_separate_database_and_state.py
- from django.db import migrations, models
- class Migration(migrations.Migration):
- dependencies = [
- ('app', '0001_initial'),
- ]
- operations = [
- migrations.AlterField(
- model_name='sale',
- name='sold_at',
- field=models.DateTimeField(
- auto_now_add=True,
- db_index=True,
- ),
- ),
- ]
在终端输出migratons文件sql语句,此处是为确保执行sql操作与django状态一致
- $ python manage.py sqlmigrate app 0002
- BEGIN;
- --
- -- Alter field sold_at on sale
- --
- CREATE INDEX "app_sale_sold_at_b9438ae4" ON "app_sale" ("sold_at");
- COMMIT;
- 接下来,需要使用“SeparateDatabaseAndState”来进行关联,我们知道,Django模型和数据库属于映射关系,django保存模型状态,和数据库之间同步需要明确指出。
- # migrations/0002_add_index_separate_database_and_state.py
- from django.db import migrations, models
- class Migration(migrations.Migration):
- atomic = False
- dependencies = [
- ('app', '0001_initial'),
- ]
- operations = [
- migrations.SeparateDatabaseAndState(
- state_operations=[
- migrations.AlterField(
- model_name='sale',
- name='sold_at',
- field=models.DateTimeField(
- auto_now_add=True,
- db_index=True,
- ),
- ),
- ],
- database_operations=[
- migrations.RunSQL(sql="""
- CREATE INDEX CONCURRENTLY "app_sale_sold_at_b9438ae4"
- ON "app_sale" ("sold_at");
- """,
- reverse_sql="""
- DROP INDEX "app_sale_sold_at_b9438ae4";
- """),
- ],
- ),
- ],
- state_operations: django此次修改动作,django自动生成动作,
- state_operations:数据库执行操作,
- reverse_sql: 类似与sql回滚,比如,迁移文件想回到上一版本时,需要将本迁移文件执行操作还原,但django不知道原始sql执行何种操作,所以,如果要回退,需要指定回滚sql。
- 另外,django迁移采用事务操作,而"CONCURRENTLY"不支持事务操作,可以采用非事务操作(不可回滚),如第6行所示。
django 建立安全索引的更多相关文章
- mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?
情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a, a,b a,b, ...
- 【hibernate/JPA】对实体类的的多个字段建立唯一索引,达到复合主键的效果【spring boot】注解创建唯一索引和普通索引
对实体类的的多个字段建立唯一索引,达到复合主键的效果 package com.sxd.swapping.domain; import lombok.Getter; import lombok.Sett ...
- Django建立helloworld自定义页面
目录介绍 按照上一篇初学Django首先建立起一个默认站点,生成如下的目录结构: manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互. 键入python manage ...
- Django 建立用户的视图(搜索 )
在web应用上,有两个关于搜索获得巨大成功的故事:Google和Yahoo,通过搜索,他们建立了几十亿美元的业务.几乎每个网站都有很大的比例访问量来自这两个搜索引擎.甚至,一个网站是否成功取决于其站内 ...
- 第二篇-Django建立数据库各表之间的联系(中)
上篇中已经建立了两个table,Book和Publish.这篇介绍如何用python增删改查数据库中的数据. 在views.py中创建一个index函数 from django.shortcuts i ...
- 第一篇-Django建立数据库各表之间的联系(上)
多表操作(一对多) 遇到的问题: 执行python manage.py makemigrations后报如下错误 TypeError: __init__() missing 1 required po ...
- 对TextFile格式文件的lzo压缩建立index索引
转自:http://blog.csdn.net/yangbutao/article/details/8519572 hadoop中可以对文件进行压缩,可以采用gzip.lzo.snappy等压缩算法. ...
- 阅读Linux内核源码时建立tags索引
比如在阅读arm架构的Linux内核代码时想建立arm架构相关的索引,可以使用下面的命令: make ARCH=arm tags
- django 建立一个简单的应用
本人的用的版本是python 2.7.3和django 1.10.5,Windows10系统 1.首先通过命令建立项目和app 找到django的安装路径,我的路径是:C:\Python27\Lib\ ...
随机推荐
- 2019-11-19-C#-高级面试题
title author date CreateTime categories C# 高级面试题 lindexi 2019-11-19 08:40:50 +0800 2018-11-12 11:18: ...
- 2018-8-10-WPF-修改图片颜色
title author date CreateTime categories WPF 修改图片颜色 lindexi 2018-08-10 19:16:53 +0800 2018-07-03 15:4 ...
- Linux 内核硬件抽象
我们结束 PCI 的讨论, 通过快速看一下系统如何处理在市场上的多种 PCI 控制器. 这只 是一个信息性的小节, 打算来展示给好奇的读者, 内核的面向对象分布如何向下扩展到最 低层. 用来实现硬件抽 ...
- WNMP nginx+php5+mysql测试环境安装(Windows7)(二)
3. 安装Zend Optimizer Zend Optimizer对那些在被最终执行之前由Run-Time Complier产生的代码进行优化,提高PHP应用程序的执行速度.一般情况下,执行使用Ze ...
- ansible核心模块playbook介绍
ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...
- Cisco DNA-C POC环境配置
Step1:在DNA-C上创建Site,本例创建Global->China->WangJiang->20 F如下图: Step2:配置fusion区域的AAA和NTP等信息,如下图: ...
- 使用Git和Github来管理自己的代码和笔记
一.Github注册 1.先注册github.com的账号,官方网站: https://github.com/ 2.登录 3.创建仓库,仓库分公开的和私有的,公开的是免费的,私有的是收费的.我现在创建 ...
- STM32的RTC晶振不起振的原因及解决方法
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了.很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋 ...
- 用postman验证接口是否可掉通
1.结合fidder抓包工具 2.打开postman 3.点击Launchpad右边“+” 4.选择postman,url粘贴fidder抓出来的数据 5.Header中粘贴fidder抓出来的KEY ...
- Adam Harley的卷积神经网络3D视觉化模型
https://m.huxiu.com/article/138857/1.html 最近 Google Tensorflow 做了一个非常直观的神经网络 playground.不夸张地说,现在每个人都 ...