Python自动化之django的ORM
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相关推荐
- 西游之路——python全栈——django中orm的使用(1)
目录 首先推荐两篇文章:Django之ORM操作,http://www.cnblogs.com/yuanchenqi/articles/6083427.html十分全面. 另外和python---OR ...
- 西游之路——python全栈——Django之ORM操作
Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...
- python——Django(ORM连表操作)
千呼万唤始出来~~~当当当,终于系统要写django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...
- Python系列之Django(ORM)
ORM 基础操作 链接mysql数据库 在setting.py中修改数据库配置文件,本教程咱们以MySQL为例 'default': {'ENGINE': 'django.db.backends.my ...
- 【五十】Python全栈之路--django的orm
文章目录 1. orm_sqlite介绍与数据库同步指令流程 1.1 orm对象关系映射 1.2 sqlite数据库 1.3 更新表结构 2. django配置连接mysql 3. orm字段和参数 ...
- python软件是干什么用的-python中的django是做什么的
Django是什么? Django是一个基于Python的Web应用框架.它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 "包含一切" 的哲学.该理念即为: ...
- python进阶学习--- django框架解析 ---领悟编程语言共性与特性【后续详解】
python进阶学习---> django框架解析 --->领悟编程语言共性与特性 1.python语言介绍 python解释型脚本语言 2.python执行原理 python解释 ...
- Python自动化运维---学习笔记
Python自动化运维 python简介 入门容易精通难,python适合作为第二编程语言(对于运维:Shell,对于开发:Java,对于全栈:nodejs(javascript)) python官网 ...
- python自动化流程概念_python selenium 自动化流程的一些总结与思考
首先要考虑的项目为什么要做自动化测试?(主要从自动化测试的优点着手) 其次是什么项目才适合做自动化测试? 自动化测试覆盖率要达到什么样的程度?因为都知道不可能达到100%的,不然脚本太臃肿,反而会失去 ...
最新文章
- javascript之namespace模式
- python导入txt文件并绘图-Python读取txt数据文件,并作图
- dojo 官方翻译 dojo/_base/array 版本1.10
- 小程序 页面禁止左右上下滑动
- PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择
- python 猴子补丁_python面试题精讲——monkey patch(猴子补丁)
- Linux 命令整理 —— 基本操作
- element table根据条件隐藏复选框
- jsonobject修改key的值_JSONObject(org.json)的一点修改
- python通过pcie读数据_PCIE硬盘能否直接被CPU读取?
- 运用Fluxion高效破解WiFi密码
- java详细教程_java超详细教程适合初学者深入掌握Java知识.ppt
- MyExcel 2.1.2 版本发布,重要 Bug 修复
- matlab 双馈,基于Matlab的双馈调速系统研究
- 云存储中不可不知的五个安全问题及应对措施
- fedora mysql 操作系统,Fedora 15 上使用php+apache+mysql+phpMyAdmin+eyeos
- React实现登录表单
- PTA 一 列车调度
- win7支持html5,用Win7+IE9体验HTML5网页游戏的革命
- 用matlab实现视频快速(N倍速)播放处理
热门文章
- python文件选择:tkFileDialog 基础
- 【STM32】ESP8266模块简介
- 【Linux系统编程】进程间通信之命名管道
- 【Linux】一步一步学Linux——dir命令(了解)(25)
- 【C++】C++虚函数表详细分析(下)
- Android 高仿微信6.0主界面 带你玩转切换图标变色
- java 洗牌_java数组之完美洗牌算法
- 我的世界手机版java安装失败_我的世界中国版JAVA路径错误的解决方法分享
- php语言冒泡法,冒泡排序法(php)
- L1-011 A-B (20 分)(c语言实现)