django(ORM操作)
django ORM简介
ORM,对象关系映射
作用,能够让一个不懂sql的小白也能够通过python面向的代码快捷的操作数据库
不足之处:封装程度太高,有时候sql语句的效率偏低,需要你自己写sql语句
orm不会帮你创建库,只能创建到表的层面
需要你自己提前创建好库
应用下面的model.py文件
1先去models.py中书写模型类
当你没有创建主键字段的时候orm会自动创建一个名为ID的主键字段
class User(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)
password = models.IntegerField()
2数据库迁移密令
python3 manage.py makemigrations 将操作记录小本本上(migration文件夹)
python3 manage.py migrate 将操作真正同步到数据库中
只要修改了model.py中跟数据库相关的代码,就必须重新执行上述两条命令
简单的orm语句
利用ORM实现数据的增删改查操作
字段的增加改查
1可以直接在终端内直接给出默认值
2该字段可以为空
3直接给出字段设置默认值
数据的增删改查
1creat()
model.User.objects.create(**kwargs)
2对象.save()
先生成一个对象
user_obj = models.User(**kwargs)
对象调用save方法
user_obj.save()
查询
filter()
model.User.objects.filter()
返回结果是一个querSet对象,你可以把它看成一个列表套数据的对象
支持索引和切片操作,但是不支持负数,并且不推荐使用索引
.first()方法
查询用户表的所有数据
方式一
model.User.objects.filter()
方式二
model.User.objects.all()
orm定义表中三种关系
一对多
models.ForeignKey(to= '关联表名')
1在django 1.x.版本中外键默认是级联更新删除的
2会自动在字段加_id后缀,无论你有没有加
3外键字段建在多的一方
多对多
models.ManyToManyField()
1在django 1.x.版本中外键默认是级联更新删除的
2该字段是一个虚拟字段不会真正的在表中展示出来,而是用来告诉django
orm当前表和关联表是多对多的外键关系,需要自动创建第三张关系表
3在django orm中多对多的表关系有好几种创建方式
一对一
models.OneToOneField()
1在django 1.x.版本中外键默认是级联更新删除的
2会自动在字段加_id后缀,无论你有没有加
3外键字段建在任意一方均可,建议你建在查询频率较高的表中