django的orm操作
对象映射关系
类 >>> 表
对象 >>> 一条数据
对象中的属性 >>> 数据中的字段
首先需要在应用下的models.py中书写模型类 class User(models.Model): # 将id字段设置为User表主键字段 在django orm中 你可以不写主键字典 django会默认给你的表创建一个名为id的主键字段 # id = models.AutoField(primary_key=True) # 一旦你自己指定了主键字段 那么django就不会自动再帮你创建了 username = models.CharField(max_length=32) # username varchar(32) CharField必须要指定max_length参数 password = models.IntegerField() # password int *************************需要执行数据库迁移(同步)命令****************************** python3 manage.py makemigrations # 仅仅是在小本本上(migrations文件夹)记录数据库的修改 并不会直接操作数据 python3 manage.py migrate # 将数据库修改记录 真正同步到数据库 注意:只要动了models中跟数据库相关的代码 就必须重新执行上面的两条命令 缺一不可(******)
表字段的增加和删除
增 当一张表已经创建出来之后 后续还想添加字段,可以有两种方式 1.给新增的字段设置默认值 addr = models.CharField(max_length=32,default='China') # default该字段默认值 2.给新增的字段设置成可以为空 age = models.IntegerField(null=True) # 该字段允许为空 删(慎用) 删除字段 直接在models.py中注释该字段 然后重新执行两条命令即可 注意:执行完之后 表中该字段所对应的所有的数据全部删除 并且一般情况下 基本是不会用到真正意义上的删除
数据的查
from app01 import models models.User.objects.all() # 直接拿所有的数据 models.User.objects.get(username=username) # get不推荐使用,如果没有该条数据时会报错 res = models.User.objects.filter(username=username) # 使用filter,没有该条数据的时候就是一个空列表
# 使用filter得到是个queryset对象,我们在这就把他理解为一个列表,列表里面都是一个一个数据对象,
因为得到是一个列表我们就可以进行索引取值,但是不推荐使用索引取值,因为在这的索引不支持负数索引,我们就无法取到最后一位
res.query # 使用queryset对象.query 能够得到查询的sql语句
user_obj = res.first() # first 就是去queryset列表中的第一个值,内部也是一个索引取值
数据的增
数据的增 1. models.User.objects.create(username=username,password=password)
# create方法能够新增数据 并且有一个返回值
# 返回值就是新增的数据对象本身
2. user_obj = models.User(username=username,password=password) user_obj.save()
数据的改和删
删
models.User.objects.filter(条件).delete()
改
models.User.objects.filter(条件).update()
"""
filter拿到是一个列表 filter操作其实都是批量操作
如果filter结果列表中有多个数据 那么会一次性全部修改
类似于for循环一个个修改
"""
其实改还有另一种方法
edit_obj = models.User.objects.filter(id=edit_id).first() edit_obj.username = username edit_obj.password = password edit_obj.save()
这种方法不推荐使用,效率极低,因为他会将所有字段都进行一个更新
而update只会讲需要更新的字段进行更新
<script>alter(123)</script>