ORM补充】的更多相关文章

今日概要: 1.ORM一对多,多对多 2.正向查询,反向查询 3.聚合查询与分组查询 4.F查询和Q查询 5.ajax 6.分页器 一.ORM补充: django在终端打印sql语句设置: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': {…
Django的ORM补充 参考文档:https://www.cnblogs.com/wupeiqi/articles/6216618.html 1.查询性能补充 1.1 select_related 查询做主动连表 # 6.性能的优化 # q=models.UserInfo.objects.all() # for row in q: # print(row.username,row.ut.title)#每次都会因为跨表多发起一次SQL查询 q=models.UserInfo.objects.al…
本篇导航: QuerySet 中介模型 查询优化 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Entry.objects.all()[:5] # (LIMIT 5) >>> Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5) 不支持负的索引(例如Entry.objects.all()[-1]).通常,查询集 的切片返回一个新…
本篇导航: QuerySet 中介模型 查询优化 extra 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Entry.objects.all()[:5] # (LIMIT 5) >>> Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5) 不支持负的索引(例如Entry.objects.all()[-1]).通常,查询集 的切…
models.FileField(verbose_name='头像', upload_to='avatars/') 文件 content = models.TextField() 文本 models.BooleanField(default=True) 布尔…
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) ---> <class 'django.db.models.query.QuerySet'> 查询出来是一个对象QuerySey 取值 print(books.values()) books = models.UserInfo.objects.filter()print(type(books))…
一.多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email. 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联…
推荐学习博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 需求: 汇总django orm操作,代替原生mysql语句来操作数据库:里面内容包含: 创建单表,多对一表,多对多表: 如何在django配置mysql: 操作数据行(单表增删改查, 联表查询,django查询高级操作,以及django如何使用原生sql语句进行查询) 1 创建数据库表(单表,多对一表) + 配置文件 django的ORM(不能创建数据库,要先创建数据库) 步…
一.ORM补充 ORM操作三大难点: 正向操作反向操作连表 其它基本操作(包含F Q extra) 性能相关的操作 class UserInfo(models.Model): uid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) passwd = models.CharField(max_length=64) age = models.ImageField(null=True)…
一.视图CBV 1.urls url(r'^login.html$', views.Login.as_view()), 2.views from django.views import View class Login(View): def get(self,request): return HttpResponse('from get') def post(self,request): return HttpResponse('from post') 二.ORM补充 正向操作 result =…
表关系总结: 一对多:在多的表中建立关联字段 多对多:创建第三张表(关联表):id 和 两个关联字段 一对一:在两张表中的任意一张表中建立关联字段(关联字段一定要加 unique 约束) 子查询:一次查询结果作为另一次查询的查询条件 创建模型: from django.db import models # Create your models here. class AuthorDetail(models.Model): nid = models.AutoField(primary_key=Tr…
前言 一.大纲 写后端API,与数据库打交道无疑是很重要的角色. PHP数据库操作:从MySQL原生API到PDO PHP数据库操作:使用ORM Ref: [PHP] 07 - Json, XML and MySQL 二.细节 SQL 教程 三.初识 Eloquent ORM Eloquent ORM是Laravel框架使用的ORM.Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动.每个数据库表对应一个模型文件. Goto: Eloque…
2018-10-17 11:09:48 orm补充参考连接: https://www.cnblogs.com/yuanchenqi/articles/8963244.html model 进阶 参考连接: https://www.cnblogs.com/yuanchenqi/articles/7570003.html 现在的stark已经增加用不部分定制类信息: 用户可以定制表头显示,中文显示什么的 都是在stark   的ModelStark这个类里面实现了 各种url解耦,各种视图解耦,然后…
内容回顾: . django请求生命周期 -> 执行遵循wsgi协议的模块(socket服务端) -> 中间件(路由匹配) -> 视图函数(业务处理:ORM.模板渲染) -> 中间件 -> wsgi返回 . 什么wsgi web服务网关接口 实现该协议的模块: - wsgiref - werkzurg - uwsig . 视图 - FBV url - 函数 - CBV url - view . djang rest framework . restful 规范() 什么是接口…

drf

跨域同源 django做跨域同源 需要把csrf去掉 跨站请求伪造 同源 同源机制:域名.协议.端口号相同的同源 简单请求 不写头部请求 跨域会拦截报错缺少请求信息 (1) 请求方法是以下三种方法之一:(也就是说如果你的请求方法是什么put.delete等肯定是非简单请求) HEAD GET POST (2)HTTP的头信息不超出以下几种字段:(如果比这些请求头多,那么一定是非简单请求) Accept Accept-Language Content-Language Last-Event-ID…
目录 一.orm补充查询 聚合查询 1-1 分组查询 1-2 F与Q查询 1-3 二. 字段及其参数 常用字段 AutoField IntegerField CharField DateField DateTimeField 字段集合 字段参数 null unique db_index default DateField和DateTimeField auto_now_add auto_now 关系字段 to to_field on_delete db_constraint 一.orm补充查询 聚…
操作补充 only 只取某些去除其他 defer 去除某些取其他 # 需求: 只取某n列 queryset=[ {},{}] models.User.objects.all().values( 'id','name') queryset=[ (),()] models.User.objects.all().values_list( 'id','name') queryset=[ obj,obj] result = models.User.objects.all().only('id','name…
1.索引: 普通索引:加快查找速度 唯一索引:加快查找速度,唯一约束 主键索引:加快查找速度,唯一索引,不为空 class UserInfo(models.Model): username = models.CharField( null=False, #不允许为空 db_column='user', #自定义列名,可以修改再数据库中的列名 max_length=, db_index=True, #普通索引,只能加速查找 # unique=True, #约束索引,加速查找,唯一约束 # prim…
之前学习的orm的操作类似: create delete update filter/all exclude values values_list get first last order_by 补充两个 only  和 defer 从字面意思就可以得到 only仅仅查找这个内容 only()-------> 仅仅查找它所规定的 user表内有有id  name  pwd  这三列 比如查询user表内 id 和name这两列的内容 user_lidt = User.objects.all().…
目录 django中的ORM与 应用与补充 ORM与数据的对应关系 ORM 常用字段 ORM 其他字段 自定义字段 字段参数 Model Meta参数 常用13中查询(必会) 单表查询的双下划线应用 ForeignKey外键的操作 多对多 聚合查询和分组查询 Django终端打印SQL语句 在Python脚本中调用Django环境 django控制台写入数据(交互式无法保存记录) django中的ORM与 应用与补充 ORM与数据的对应关系 ORM 面向对象和关系型数据库的一种映射,通过操作对象…
补充:垃圾回收机制.线程池和ORM缺点 垃圾回收机制不仅有引用计数,还有标记清除和分代回收 引用计数就是内存地址的门牌号,为0时就会回收掉,但是会出现循环引用问题,这种情况下会导致内存泄漏(即不会被用,也不会被清除,一直占着) 标记清除就是有引用就画有向图,如果根对象不能通过边达到,那么就被视为垃圾进行回收 分代回收就是把变量分为0代,1代等若干代,数字越小,表示越年轻,越容易被回收掉,0代通过一定的积累就会变成1代以此类推,数字大的一般是全局变量这样 详细戳视频 线程池:为了保障硬件的安全性,…
models.py: from django.db import models class Employee2(models.Model): name = models.CharField(max_length=16) age = models.IntegerField() salary = models.IntegerField() province = models.CharField(max_length=32) dept = models.ForeignKey(to="Dept"…
单表查询: models.py: from django.db import models class Employee(models.Model): name = models.CharField(max_length=16) age = models.IntegerField() salary = models.IntegerField() province = models.CharField(max_length=32) dept = models.CharField(max_lengt…
---恢复内容开始--- 你在建立一个登陆的时候需要用到auth这个用户登陆模块 这个时候就需要用到user表中的信息你就可以继承 这个时候我们的用户表中继承我们user继承的表 ABstractUser表  然后再在settings内设置信息告诉django AUTH_USER_MODEL="once.UserInfo" AUTH_USER_MODEL = '你的app.UserInfo' 就是告诉你的django你的models内继承了这个类 然后导入这个类 from django…
阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=10, decimal_places=2) # 库存数 inventory = models.IntegerField() # 卖出数 sale = models.IntegerField() def __s…
Queryset官方文档:https://docs.djangoproject.com/en/1.11/ref/models/querysets/ 1.需求1:只取某n列 1.方法1:values 2.方法2:values_list 3.方法3:only,defer # 需求1:只取某n列 # 推荐 方法3:only class Test1View(APIView): def get(self, request, *args, **kwargs): """只取某n列"…
1.only  defer only: 获取数据表中某列或多列的值,注意获取的是对象,如果查询字段不是括号内的,效率反而变低 defer: 获取除了某列或某几列的数据,注意获取的是对象 User.objects.values('id', 'name') User.objects.values_list('id', 'name') ret = User.objects.only('id', 'name') for i in ret: print(i.id, i.nme) 2.selected_re…
目录 一.控制多表关系的字段属性 1.如何建立基表 2.断开连表关系 3.四种级联关系 二.子序列化 一.控制多表关系的字段属性 1.如何建立基表 要在基表中配置Meta,设置abstract=True,声明本表为抽象类表,专门用来被继承,用来提供公有字段的,不需要在数据库中迁移. # models.py from django.contrib.auth.models import User class BaseModel(models.Model): is_delete = models.Bo…
Q的简单用法 from django.db.models import Q q = Q() q.children.append(("username", "lyj")) q.children.append(("age", "18")) #如果不设置,默认是 and q.connector = "or" res = User.objects.filter(q) Q查询可以组合使用 "&&qu…