写在开头
大家是不是从todoList过来的,在todoList案例中,我们说到,所有涉及到的数据库的操作,你不会看到任何一句SQL语句,取而代之的是ORM,这个ORM具体是什么呢?
所谓ORM,即(Object-Relationl Mapping), 它是关系型数据库和对象的一种映射关系,这里说到了两个名词,一是关系型数据库,在todoList案例中指的是Mysql数据库;二是对象,那么这个对象具体指代的是什么呢? 带着这个疑问🤔️, 耐心往下看.
数据库映射对象
这里我们新建一个应用 User, 在User模块下的models.py下建立一个类
from django.db import models
# Create your models here.
class UserModel(models.Model):
username = models.CharField(max_length=20, default='default_user', verbose_name="用户名")
password = models.CharField(max_length=30, verbose_name="密码")
然后执行以下两条命令
python manage.py makemigrations
python manage.py migrate
然后去观察你的数据库, 此时就会多一张表
观察会发现,数据表名称好像是有规律的,表名默认为 [创建的应用名_数据类名小写 ]
如何改变这个表名呢? 改造上面的对象模型,然后重新执行那两个命令
class UserModel(models.Model):
username = models.CharField(max_length=20, default='default_user', verbose_name="用户名")
password = models.CharField(max_length=30, verbose_name="密码")
class Meta:
db_table = "User"
verbose_name = "User"
verbose_name_plural = verbose_name
再去观察数据库
CURD
增加
选中这个窗口
from User.models import UserModel # 将数据库对象引入
方式1
UserModel.Objects.create(username='admin', password='123456')
方式2
user = UserModel(username='jake', password='123')
user.save()
查找
UserModel.objects.all()
UserModel.objects.filter()
UserModel.objects.filter(username='admin')
UserModel.objects.get(username="admin")
前面三种方式查询结果都是QuerySet类型, (类似集合的概念), 后面使用get查询结构是UserModel类型
修改
方式1 使用update (只能对集合结果使用)
UserModel.objects.all().update(password='123456aaa')
返回结果为影响的行数
方式2 对象修改某些属性后调用save方法
user = UserModel.objects.get(username='admin')
user.password = '123123admin'
user.save()
删除
UserModel.objects.filter(username='admin').delete()
UserModel.objects.all().delete() # 慎用
UserModel.objects.get(id=8).delete()
写在最后
以上就是简单数据表的ORM基础操作,如果想要了解更多,这里会是更好的选择