Django框架学习笔记(九)

本文深入讲解Django ORM的使用方法,包括如何通过类创建数据库表、执行增删改查操作,以及如何设置数据库配置。同时介绍了操作表和数据行的具体步骤,提供了实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django中ORM操作

Django的ORM主要有两个功能:操作表、操作数据行

操作表: 创建表、修改表(表的结构和数据类型)、删除表
操作数据行: 增删改查

ORM使用前的准备工作

  1. 创建数据库
  2. 修改settings.py的数据库配置,填写数据库的相关信息
  3. 引入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文件中进行注册:

完成注册之后还需要执行两个命令【牢记】才真正才成了表的创建:

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述
执行成功之后,我们就可以在数据库中看到我们创建的表:

一对多: 通常把外键写在的一方
在这里插入图片描述
执行命令之后,刷新数据库表,得到的userinfo如图所示:
在这里插入图片描述

当我们需要修改某个字段或者给表增加列时,要注意控制台的提示信息,并且需要执行上面提到的两个命令,它会生成记录,每次对数据表进行操作时都会对比上一次的记录来生成新的sql执行语句,轻易不要删除

在这里插入图片描述

数据库的相关操作

urls.py

path('index/', views.index),

views.py

# 数据库相关操作:
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})

待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值