一、orm介绍

1、什么是orm

ORM即Object Relational Mapping,全称对象关系映射。

2、使用orm的优缺点

优点:
  • 不用写SQL语句
  • 开发效率高
缺点:
  • SQL的效率低

3、使用orm

  • 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可

  • 如果连接mysql,需要在配置文件中的setting中进行配置:

    将DATABASES={} 更新为

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','PORT': 3306,'USER': 'root','PASSWORD': 'pie123','NAME': 'test_database',}
}

同时还要在__init__.py文件中进行初始化设置:

import pymysql
pymysql.install_as_MySQLdb()

配置完以后,要进行数据迁移(在pycharm的终端Terminal中运行指令),否则数据更新不能同步到mysql数据库中

python manage.py makemigrations    ----记录数据库的变化,在migrations文件中可以看到记录
python manage.py migrate           ----将变化同步到数据库中

或者

菜单 tools--->Run manage.py Task,即可进入manage.py,直接输入以下指令即可

makemigrations    ----记录数据库的变化,在migrations文件中可以看到记录
migrate           ----将变化同步到数据库中

4、orm的使用限制

​ 只能创建数据表和字段不能创建数据库(必须手动创建数据库)

​ 创建一个类就表示创建了一个数据表,类中的属性表示数据表中的字段

创建表和字段在modules.py中

类 --->  数据表
属性 --->  字段

5、orm创建表和字段

# 类必须继承models.Model类,否则只表示一个普通的类
# AutoField 自动增长的int类型
# primary_key=True 该字段是主键
# CharField(max_length=32) 表示 varchar(32)
class User(models.Model):id = models.AutoField(primary_key=True)name = models.CharField(max_length=32)password = models.CharField(max_length=32)address = models.CharField(max_length=32)

二、orm增删改字段

在增删改以后都要进行数据迁移

1、orm增加字段

直接在创建表的类中添加一个属性,即增加一个字段,然后执行数据迁移

添加的字段必须有默认值,两种方式

  • 在添加的参数中添加默认值
phone=models.CharField(max_length=64,default='120')

  • 在数据迁移的时候,设置默认值

2、orm删除字段

将类中的属性注释,即表示删除字段,执行数据迁移

3、orm修改字段

直接修改类中的属性,执行数据库迁移命令

4、案例总结

  • user表的增删改
(1)单表查询所有用户

得到的是queryset对象(类似于列表),列表中一个个对象[user1, user2, user3]

res = models.User.objects.all()

(2)render

返回页面,将queryset对象(类似于列表)res返回到userlist.html页面的user_list

render(request, 'userlist.html', {'user_list': res})

(3)循环模板
{% for user in user_list %}# 要循环的内容,下面的插值表达式表示获取每一个user的name的数据
    {{user.name}}
{% endfor%}

(4)get请求携带参数

通过get发送请求,会将数据暴露出来,例如id就会显示http://127.0.0.1:8000/deleteuser/?id=1
前台get方式提交的数据,后台从request.GET字典里取值:

id = request.GET.get('id')   # 推荐使用,即使没有接收到数据也会有默认值,不会抛出异常
或者
id = request.GET['id']  # 该方式要是没有接收到数据会出现异常

(5)post请求提交数据

前台post方式提交的数据,后台从request.POST字典里取值:

name = request.POST.get('name')

(6)删除数据记录

先过滤找到指定数据,然后调用方法delete()删除该数据

# 返回值是影响的行数
res = models.User.objects.filter(id = id).delete()

(7)添加数据记录

两种方式:

  • 方式一:
user=models.User.objects.create(name=name,password=pwd,address=addr)

  • 方式二:
user = models.User(name=name, password=password, address=addr)
user.save()

(8)修改数据记录

先过滤找到要修改的数据记录,然后调用update()方法修改数据

models.User.objects.filter(id = id).update(name=name,password=password,age=age)

(9)查询单条数据

由于过滤到的所有数据可能是多条数据,所以要用first()来取出第一条

三、Django生命周期

浏览器 ---> web服务器 ---> 路由匹配 ----> 视图函数 ---> 操作模板和数据

转载于:https://www.cnblogs.com/zhangbingsheng/p/10612079.html

Django框架(三)-- orm增删改查、Django生命周期相关推荐

  1. Django 07. django框架模型之增删改查基本操作

    简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构         models.py #!/usr/bin/env python # -*- coding: utf-8 - ...

  2. Django框架(三)—— orm增删改查、Django生命周期

    orm增删改查.Django生命周期 一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 ...

  3. Django04-1: ORM增删改查

    ORM 增删改查 一.字段增加 #终端输入 1.model里添加字段, 2.执行迁移命令. 3.终端里输入默认值,继续执行迁移命令. #允许为空 再null=true,终端不需要输入默认值 #设置默认 ...

  4. 【MyBatis】安装 + 框架搭建 + 优化 + 增删改查(全程一条龙服务讲解~)

    目录 前言 一.准备工作 1.1.下载MyBatis 1.2.数据库设计 二.搭建框架 2.1.创建Maven项目 2.2.jar包.引入依赖 2.3.创建MyBatis核心配置文件 2.4.映射文件 ...

  5. java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能

    基于ssm框架组合的增删改查功能 ssm框架组合之前已经搭建完成了,下面基于该框架组合实现增删改查的功能,首先创建一个数据库和一张表: CREATE DATABASE `ssmteam` /*!401 ...

  6. Django之数据表增删改查

    Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse# Create your views here. from ap ...

  7. ManytoMany字段增删改查Django

    Django下ManytoMany 增删改查 建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student # 学生类 class Stu ...

  8. SSHE框架整合(增删改查)

    1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的   转码的,和Struts2的过滤器 <?xml version="1.0" e ...

  9. SSM框架搭建+easyui增删改查

    转载于:http://www.cnblogs.com/caiya928/p/4851686.html?utm_source=tuicool&utm_medium=referral 闲来无事,看 ...

最新文章

  1. 如何在SharePoint Server中整合其他应用系统?
  2. UML建模之业务处理模型(Business Process Model,BPM)
  3. tp连接mysql mysql_thinkphp学习简易教程(二) thinkphp连接读取MySQL数据库
  4. OpenEIM 从天上飘落下来
  5. NLTK使用英文词性还原
  6. R 回归 虚拟变量na_互助问答第85期:虚拟变量和空间面板回归问题
  7. dump排查内存异常 java_如何排查Java应用内存泄漏问题
  8. ubuntu-常用命令汇总
  9. UITableView分割线
  10. MySQL基础练习题(带答案)
  11. 三原色是红黄蓝对吗_三原色是哪几种颜色?是红黄蓝,还是红绿蓝
  12. 第三届上海市大学生网络安全大赛 流量分析
  13. QT-常用函数参数详解之painter->fillRect(),预设值的颜色展示
  14. uniapp 获取到当前位置信息显示在地图上
  15. atoi atol实现
  16. appinventor跑酷游戏_基于APPInventor的一款益智游戏的设计与实现
  17. 我在百度大脑用数据看《你好,李焕英》
  18. linux1394b接口,Linux下IEEE1394组网技术研究及实现
  19. UGREEN 绿联 USB 2.0转串口DB9 打印线 驱动安装教程
  20. 关于浏览器和网络的20项须知-什么是互联网?

热门文章

  1. 大学计算机实验报告2,大学计算机基础实验报告2.doc
  2. 这台计算机似乎没有安装操作系统_【每日一练】计算机一级考试(一)
  3. python 复杂数据相似度计算_Opencv python图像处理-图像相似度计算
  4. 加密软件漏洞评测系统_惠州上线软件产品登记测试企业
  5. 系统学习机器学习之SVM(二)
  6. mysql可靠性优先策略
  7. java Context类
  8. JavaScript执行机制-node事件循环
  9. 用户奖励体系有哪些反作弊的机制?
  10. 《HTML5 开发实例大全》——1.32 在表单中使用 object 元素插入一个Flash