ORM是什么?:
(在django中,根据代码中的类自动生成数据库的表也叫–code first)
ORM:Object Relational Mapping(关系对象映射)
类名对应------》数据库中的表名
类属性对应---------》数据库里的字段
类实例对应---------》数据库表里的一行数据
obj.id obj.name…类实例对象的属性
Django orm的优势:
Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite…,如果数据库迁移,只需要更换Django的数据库引擎即可;
orm的基本操作
编写类代码
class Users(models.Model):
uid = models.AutoField(primary_key=True) # 等价于uid int primary key auto_increment
name = models.CharField(max_length=32) # 等价于name varchar(32)
pwd = models.IntegerField() # 等价于pwd int
编写好代码之后,我们需要执行数据库迁移命令
python3 manage.py makemigrations # 记录操作
python3 manage.py migrate # 将操作迁移到数据库
执行python3 manage.py makemigrations 之后,会新增以下的文件
执行 python3 manage.py migrate,将操作迁移到数据库
添加数据
user_obj = models.Users.objects.create(name='bana', pwd='123')
添加多条数据
查看数据
res = models.Users.objects.filter(name='jason')
修改数据
models.Users.objects.filter(uid=1).update(name='jasonNB')
删除数据
models.Users.objects.filter(uid=3).delete()
ORM操作常见方法
方法 | 作用 |
---|---|
values(字段1,字段2…) | 查询指定字段,返回值相当于列表套字典 |
values_list(字段1,字段2…) | 查询指定字段,返回值相当于列表套元组 |
distinct() | 将查询出来的数据去重 |
order_by(字段) | 默认根据指定字段升序排序,字段前加’负号(-)'可以改成降序 |
order_by(字段1,字段2…) | 多字段排序 |
exclude(条件) | 查询不符合条件的数据 |
reverse() | 查询结果倒置,只有在排序后在起作用 |
count() | 返回结果集个数 |
exists() | 判断结果集中是否有数据,有返回True,没有返回False |
get() | 直接获取数据对象,但是数据不存在会报错 |