django ORM操作

1.什么是ORM?

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

select * from tb where id > 1
# 对应关系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)创建类a. 先写类from django.db import models# app01_userinfoclass UserInfo(models.Model):# id列,自增,主键# 用户名列,字符串类型,指定长度username = models.CharField(max_length=32)password = models.CharField(max_length=64)

配置连接MySQL

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME':'dbname','USER': 'root','PASSWORD': 'xxx','HOST': '','PORT': '',}
}# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替# 如下设置放置的与project同名的配置的 __init__.py文件中import pymysql
pymysql.install_as_MySQLdb() 

注册APP

a. 注册APPINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01',]
b. 执行命令python manage.py  makemigrations //会生成记录数据库的改动的文件python manage.py  migrate //把改动应用到数据库

增加数据

models.Tb1.objects.create(c1='xx', c2='oo')  增加一条数据,可以接受字典类型数据 **kwargsobj = models.Tb1(c1='xx', c2='oo')# obj.save()

Tb1是类名

删除数据

models.Tb1.objects.filter(name='seven').delete()

修改

#更新一条数据
color_obj=models.Colors.objects.get(colors="黑")
color_obj.colors="灰"
color_obj.save()
#更新多条数据,把满足条件的球的description都变为灰球
#写法1:
models.Ball.objects.filter(color__colors="红").update(description="灰球")
#写法2:
up_dic={"description":"灰球"}
models.Ball.objects.filter(id__gt=0).update(**up_dic)

# models.Tb1.objects.get(id=123)         # 获取单条数据,不存在则报错(不建议)
# models.Tb1.objects.all()               # 获取全部
# models.Tb1.objects.filter(name='seven') # 获取指定条件的数据

其他操作

# 获取个数
#
# models.Tb1.objects.filter(name='seven').count()# 大于,小于
#
# models.Tb1.objects.filter(id__gt=1)              # 获取id大于1的值
# models.Tb1.objects.filter(id__lt=10)             # 获取id小于10的值
# models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值# in
#
# models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
# models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in# contains
#
# models.Tb1.objects.filter(name__contains="ven")
# models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
# models.Tb1.objects.exclude(name__icontains="ven")# range
#
# models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and# 其他类似
#
# startswith,istartswith, endswith, iendswith,# order by
#
# models.Tb1.objects.filter(name='seven').order_by('id')    # asc
# models.Tb1.objects.filter(name='seven').order_by('-id')   # desc# limit 、offset
#
# models.Tb1.objects.all()[10:20]# group by
from django.db.models import Count, Min, Max, Sum
# models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))
# SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"

进阶操作

转载于:https://www.cnblogs.com/wspblog/p/6170742.html

Python自动化之django的ORM相关推荐

  1. 西游之路——python全栈——django中orm的使用(1)

    目录 首先推荐两篇文章:Django之ORM操作,http://www.cnblogs.com/yuanchenqi/articles/6083427.html十分全面. 另外和python---OR ...

  2. 西游之路——python全栈——Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  3. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统要写django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  4. Python系列之Django(ORM)

    ORM 基础操作 链接mysql数据库 在setting.py中修改数据库配置文件,本教程咱们以MySQL为例 'default': {'ENGINE': 'django.db.backends.my ...

  5. 【五十】Python全栈之路--django的orm

    文章目录 1. orm_sqlite介绍与数据库同步指令流程 1.1 orm对象关系映射 1.2 sqlite数据库 1.3 更新表结构 2. django配置连接mysql 3. orm字段和参数 ...

  6. python软件是干什么用的-python中的django是做什么的

    Django是什么? Django是一个基于Python的Web应用框架.它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 "包含一切" 的哲学.该理念即为: ...

  7. python进阶学习--- django框架解析 ---领悟编程语言共性与特性【后续详解】

    python进阶学习---> django框架解析 --->领悟编程语言共性与特性 1.python语言介绍   python解释型脚本语言 2.python执行原理   python解释 ...

  8. Python自动化运维---学习笔记

    Python自动化运维 python简介 入门容易精通难,python适合作为第二编程语言(对于运维:Shell,对于开发:Java,对于全栈:nodejs(javascript)) python官网 ...

  9. python自动化流程概念_python selenium 自动化流程的一些总结与思考

    首先要考虑的项目为什么要做自动化测试?(主要从自动化测试的优点着手) 其次是什么项目才适合做自动化测试? 自动化测试覆盖率要达到什么样的程度?因为都知道不可能达到100%的,不然脚本太臃肿,反而会失去 ...

最新文章

  1. javascript之namespace模式
  2. python导入txt文件并绘图-Python读取txt数据文件,并作图
  3. dojo 官方翻译 dojo/_base/array 版本1.10
  4. 小程序 页面禁止左右上下滑动
  5. PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择
  6. python 猴子补丁_python面试题精讲——monkey patch(猴子补丁)
  7. Linux 命令整理 —— 基本操作
  8. element table根据条件隐藏复选框
  9. jsonobject修改key的值_JSONObject(org.json)的一点修改
  10. python通过pcie读数据_PCIE硬盘能否直接被CPU读取?
  11. 运用Fluxion高效破解WiFi密码
  12. java详细教程_java超详细教程适合初学者深入掌握Java知识.ppt
  13. MyExcel 2.1.2 版本发布,重要 Bug 修复
  14. matlab 双馈,基于Matlab的双馈调速系统研究
  15. 云存储中不可不知的五个安全问题及应对措施
  16. fedora mysql 操作系统,Fedora 15 上使用php+apache+mysql+phpMyAdmin+eyeos
  17. React实现登录表单
  18. PTA 一 列车调度
  19. win7支持html5,用Win7+IE9体验HTML5网页游戏的革命
  20. 用matlab实现视频快速(N倍速)播放处理

热门文章

  1. python文件选择:tkFileDialog 基础
  2. 【STM32】ESP8266模块简介
  3. 【Linux系统编程】进程间通信之命名管道
  4. 【Linux】一步一步学Linux——dir命令(了解)(25)
  5. 【C++】C++虚函数表详细分析(下)
  6. Android 高仿微信6.0主界面 带你玩转切换图标变色
  7. java 洗牌_java数组之完美洗牌算法
  8. 我的世界手机版java安装失败_我的世界中国版JAVA路径错误的解决方法分享
  9. php语言冒泡法,冒泡排序法(php)
  10. L1-011 A-B (20 分)(c语言实现)