Django中ORM操作
Django的ORM主要有两个功能:操作表、操作数据行
操作表: 创建表、修改表(表的结构和数据类型)、删除表
操作数据行: 增删改查
ORM使用前的准备工作
- 创建数据库
- 修改settings.py的数据库配置,填写数据库的相关信息
- 引入pymysql来替换mysql_db
Django的ORM不能直接连接数据库,需要借助pymysql等第三方的工具来实现数据库连接。在Django中,默认连接的数据库是SQLite(文件型),当我们想使用mysql数据库时,需要对settings.py的数据库配置进行修改:
修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'orm',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'localhost',
'PORT': 3306,
}
}
填写好数据库的相关信息之后,控制台会报错,我们还需要在项目同名目录的__init__.py(与settings.py同级)进行配置:
这样pymysql就会把内部的mysql_db替换了
ORM创建数据表
Django用ORM创建数据表是通过类来实现的,通常写在应用的models.py文件里
这句可以省略,Django会自动创建一个自增的id列,并且是主键
nid = models.BigAutoField(primary_key=True)
当我们简单创建一个表时,如果想要生成,则需要进行注册,同样是在settings.py文件中进行注册:
完成注册之后还需要执行两个命令【牢记】才真正才成了表的创建:
执行成功之后,我们就可以在数据库中看到我们创建的表:
一对多: 通常把外键写在多
的一方
执行命令之后,刷新数据库表,得到的userinfo如图所示:
当我们需要修改某个字段或者给表增加列时,要注意控制台的提示信息,并且需要执行上面提到的两个命令,它会生成记录,每次对数据表进行操作时都会对比上一次的记录来生成新的sql执行语句,轻易不要删除
数据库的相关操作
path('index/', views.index),
# 数据库相关操作:
def index(request):
# 增删改查
from app01 import models
# 增
models.UserGroup.objects.create(title='销售部')
models.UserGroup.objects.create(title='人事部')
models.UserInfo.objects.create(username='root', password='123456', age=18, ug_id=1)
# 查
group_list = models.UserGroup.objects.all()
# print(group_list) # QuerySet类型,可看做列表
# for group in group_list:
# print(group.id, group.title) # 获取每个group的id和title
# 条件查询
models.UserGroup.objects.filter(id=1) # 相当于where id=1
models.UserGroup.objects.filter(id__gt=1) # 相当于where id>1
models.UserGroup.objects.filter(id__lt=1) # 相当于where id<1
# 删
models.UserGroup.objects.filter(id=2).delete()
# 改
models.UserGroup.objects.filter(id=1).update(title='公关部')
return render(request, 'index.html', {'group_list': group_list})
待续…