Django跨数据库迁移和表结构迁移以及ORM索引优化_django orm get索引-程序员宅基地

技术标签: Django  

备份数据库(备份app数据库)
python manage.py dumpdata authorization > authorization_data.json
同步数据库结构到slave(跨DB迁移)
python manage.py migrate --run-syncdb --database slave
同步数据到mysql数据库(导入数据)
python manage.py loaddata authorization_data.json

Django中ORM使用索引的话,会加快检索的速度,mysql底层是B+树
在ORM中添加索引的两种方法:

方法1:在字段后面添加db_index=True
方法2:在模型的Meta属性类中添加参数:

class Meta:
indexes = [
models.Index(fields = [‘nikename’])#独立索引
models.Index(fields = [‘nikename’,“open_id”])#组合索引
]

Django中默认的索引规则:
主键必定是索引
外键是默认索引(也可以不是索引)

Django模型层-关系映射
三种关系映射
一对一的关系
一对多的关系(多对一)
多对多的关系

Django中的关系映射
一对一:OneToOneField
一对多:外键(Foreignkey)
多对多:ManyToManyField 只需要在一个类中添加即可

ORM中批量添加数据
def add_batch():
new_user_list = []
for i in range(10):
open_id = ranstr(32)
nike_name = ranstr(32)
user = UserProfile(open_id = open_id,nikename=nike_name)
new_user_list.append(user)
UserProfile.object.bulk_creat(new_user_lsit)

get 和filter的区别:
get是获取单个数据,查不到会报错
filter返回的是一个列表
批量查找
userobject.filter(open_id_contains = “123”)
批量删除
user.objec.filter(open_id_contains=“test_”).delete()
全部删除
user.objecr.all().delete()

批量修改
user.object.filter(opne_id_contains=“test_”).updata(nikename = “muuu”)

数据库函数:
字符串拼接:Concat
from django.db.model.functions import Concat
def concat_function():
user

查询常用的数据库函数"

in,pk相当于查询猪圈

gt 大于
Entry.objects.filter(id__gt=4)

SQL等效项:

SELECT ... WHERE id > 4;
gte大于或等于。
lt 少于。
lte小于或等于。
startswith

区分大小写的开头为。

例:

Entry.objects.filter(headline__startswith='Lennon')

SQL等效项:

SELECT ... WHERE headline LIKE 'Lennon%';

SQLite不支持区分大小写的LIKE语句。startswith就像istartswithSQLite一样。

istartswith

不区分大小写的开头为。

例:

Entry.objects.filter(headline__istartswith='Lennon')

SQL等效项:

SELECT ... WHERE headline ILIKE 'Lennon%';
endswith

区分大小写。

例:

Entry.objects.filter(headline__endswith='Lennon')

SQL等效项:

SELECT ... WHERE headline LIKE '%Lennon';
iendswith

不区分大小写的结尾为。

例:

Entry.objects.filter(headline__iendswith='Lennon')

SQL等效项:

SELECT ... WHERE headline ILIKE '%Lennon'
range

范围测试(含)。

例:

import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))

SQL等效项:

SELECT ... WHERE pub_date BETWEEN '2005-01-01' and '2005-03-31';
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37463791/article/details/104998187

智能推荐

【vue 移动端使用alloyfinger操作图片拖拽缩放】-程序员宅基地

vue 移动端使用alloyfinger操作图片拖拽缩放_alloyfinger

村田Murata电容学习笔记_如何下载atc的ads电容模型_哈尔的移动鳕鱼堡的博客-程序员宅基地

通过ADS软件中的DesignKits即可添加村田模型到元器件库中。_如何下载atc的ads电容模型

python正则表达式(1)--特殊字符-程序员宅基地

正则表达式—特殊表达式含义正则表达式的字母和数字表示他们自身,但多数字母和数字前加一个反斜杠时会拥有不同的含义。下面列出了正则表达式模式语法中的特殊元素。1.普通字符集1) \w   匹配字母数字及下划线2) \W   匹配非字母数字及下划线3) \s   匹配任意空白字...

【NOI2019】斗主地【期望】【组合数学】【下降幂】【插值】_下降幂 组合公式-程序员宅基地

题意:有nnn张牌,从上往下的第iii张牌权值是f(i)=itypef(i)=i^{type}f(i)=itype。进行mmm次洗牌操作,每次操作给定aia_iai​,将从上往下的前aia_iai​张牌分成一堆,后面bib_ibi​张牌分成第二堆。如果两堆的牌数分别为X,YX,YX,Y,则有XX+Y\frac{X}{X+Y}X+YX​的概率将第一堆的最下面一张牌放在第三堆的最上面,否则将第二堆的最下面放到第三堆的最上面,直到两边都没有牌,第三堆为最终结果。最后qqq次询问从上往下第cic_ici​张牌_下降幂 组合公式

最优传输论文(十二):Extracting Relationships by Multi-Domain Matching论文原理-程序员宅基地

目录前言IntroductionMethodDomain Adaptation with Relationship ExtractionCombining the Loss TermsComplexity AnalysisTheoretical Results个人总结前言2018年的NeurIPS。在许多生物和医学环境中,我们通过聚集许多来源来构建一个大的标记语料库,用于目标预测任务。不幸的是,许多源可能与我们的目标任务无关,因此忽略数据集的结构是有害的。所以说不能忽略数据集的结构,而本文提出的多_extracting relationships by multi-domain matching

**UBUNTU20.04忘记密码后重新设定**_ubuntu 20.04 recovery 重置密码-程序员宅基地

UBUNTU20.04忘记密码后重新设定第一篇文章,先写一个自己遇到的小问题,因为看到ubuntu20.04对于忘记密码后的操作还没人写过,特此补充。1.重启虚拟机2.重启的时候不停按ESC直到进入一个类似设置的界面选择第二个即进入高级设置。3.进入之后选择recovery模式4.进入recovery模式后,老版本总是给出一堆代码,然后你来毫无头绪的修改代码。在这里,你只需找到root并进入5.下面只需要输入命令passwd即可输入之后会自动让你输入新的密码,然后再输入命令reboot重启_ubuntu 20.04 recovery 重置密码

随便推点

nth-child()和nth-of-type()的区别-程序员宅基地

nth-child()例如:p:nth-child(3)表示满足父元素下的p元素,并且在父元素下位置排第三。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>nth-child()和nth-of-type()</title&_nth-child()和nth-of-type()

c语言转换为stc程序,STC51单片机入门(C语言)-程序员宅基地

以前老资料,可继续下载参考。目 录第1篇 单片机KEIL开发环境第1章点亮LED实例与经典延时程序介绍(看不懂就从第2章动手)1.1 51单片机最小系统与芯片引脚图1.2 点亮LED的多个常用实例1.3 C语言各种延时程序详解1.3.1 经典汇编延时程序时间计算(设晶振频率12Mz)1.3.2 单片机C语言延时程序(大范围精确计算法:晶振频率任意)1.3.3 单片机C语言延时程序(小范围精..._stc 串口1 c程序

Ajax面试题 | 前端_风筝风的博客-程序员宅基地

前端Ajax 面试题 整理_ajax面试题

c语言第4次报告,c语言实验报告--第9次报告思考题.docx-程序员宅基地

c语言实验报告--第9次报告思考题洛阳理工学院实验报告  附:源程序:  第一题:  #include  intmain()  {  int*p,a[3],num;printf("请输入3个整数\n");for(num=0;num*(p+1)){}printf("从小到大排列为:\n");for(p=a;p*(p+1)){}num=*p;*p=*(p+1);*(p+1)=num;printf("\...

第十届蓝桥杯省赛Java A组 修改数组【并查集】_给定一个长度为 n 的数组 a = [a1; a2; · · · an],数组中有可能有重复出现 的-程序员宅基地

【问题描述】给定一个长度为 N 的数组 A = [A1, A2, · · · AN],数组中有可能有重复出现的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改A2, A3, · · · , AN。当修改 Ai 时,小明会检查 Ai 是否在 A1 ∼ Ai−1 中出现过。如果出现过,则小明会给 Ai 加上 1 ;如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1..._给定一个长度为 n 的数组 a = [a1; a2; · · · an],数组中有可能有重复出现 的

Vsftpd虚拟用户的配置及pureftp配置解析-程序员宅基地

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:[root@localhostvsftpd]#vimvu...