Django框架-- orm增删改查Django生命周期

Posted zhangbingsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django框架-- orm增删改查Django生命周期相关的知识,希望对你有一定的参考价值。

一、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服务器 ---> 路由匹配 ----> 视图函数 ---> 操作模板和数据

技术图片

 

以上是关于Django框架-- orm增删改查Django生命周期的主要内容,如果未能解决你的问题,请参考以下文章

python-django框架-orm相关继续&ORM的增删改查操作_20191110

Web框架之Django_02基本操作(Django项目启动配置数据库连接orm增删改查)

02 django 框架ORM 操作数据库,字段的增删改查

SQLAlchemy增删改查 一对多 多对多

Django 自带的ORM增删改查

django orm 单表增删改查