Django 操作表中的数据(增删改查)

1.新建数据

我之前已经在数据库中创建了两张表,如下

在urls.py文件中添加一行代码,然后再在views.py文件中编写函数

(将 URL 路径 orm/ 映射到 Django 视图函数 views.orm,当用户访问 orm/ 时,Django 会调用 orm 视图函数处理请求)

在views.py中先将表导入进来,Department,UserInfo是创建两张表的类名

我向UserInfo表中创建了两条数据

app01注意改成你自己创建的app名称

python 复制代码
from app01.models import UserInfo

def orm(request):

    UserInfo.objects.create(name="柳贯一", password="123", age=19)
    UserInfo.objects.create(name="李暮春", password="666", age=22)

    return HttpResponse("成功")

运行

访问127.0.0.1:8000/orm/

查看mysql,数据新建成功

我发现,多次刷新(提交)网页,数据会被多次添加,例如

运行之前的表

运行,并多次刷新

数据多次被添加

2.删除数据

现在我的数据库拥有下面两张表

现在我想删除app01_userinfo表中id=2的数据,删除app01_department表中所有的数据

python 复制代码
def orm(request):
    # 新建
    # Department.objects.create(name="销售部")
    # Department.objects.create(name="IT部")
    # Department.objects.create(name="运营部")
    # UserInfo.objects.create(name="柳贯一", password="123", age=19)
    # UserInfo.objects.create(name="李暮春", password="666", age=22)

    # 删除
    UserInfo.objects.filter(id=2).delete()
    Department.objects.all().delete()

    return HttpResponse("成功")

运行

删除成功

3.获取数据

python 复制代码
def orm(request):
    # # 新建
    # Department.objects.create(name="销售部")
    # Department.objects.create(name="IT部")
    # Department.objects.create(name="运营部")
    # UserInfo.objects.create(name="柳贯一", password="123", age=19)
    # UserInfo.objects.create(name="李暮春", password="666", age=22)

    # # 删除
    # UserInfo.objects.filter(id=2).delete()
    # Department.objects.all().delete()

    # 获取数据
    # 查询所有数据
    data_list = UserInfo.objects.all()
    for obj in data_list:
        print(obj.id, obj.name, obj.password, obj.age)

    # 查询 id=1 的记录
    data_list = UserInfo.objects.filter(id=1)
    print(data_list)

    # 获取 id=1 的第一条记录
    row_obj = UserInfo.objects.filter(id=1).first()
    print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

    return HttpResponse("成功")

UserInfo.objects.all():查询 UserInfo 表中的所有数据,返回一个 QuerySet

UserInfo.objects.filter(id=1):查询 id=1 的记录,返回一个 QuerySet。

UserInfo.objects.filter(id=1).first():获取 id=1 的第一条记录,返回一个 UserInfo 对象。

运行

查看结果

4.更新数据

为了更好展示,我在app01_userinfo表中新建了多个数据

python 复制代码
def orm(request):
    # # 新建
    # Department.objects.create(name="销售部")
    # Department.objects.create(name="IT部")
    # Department.objects.create(name="运营部")
    # UserInfo.objects.create(name="柳贯一", password="123", age=19)
    # UserInfo.objects.create(name="李暮春", password="666", age=22)
    # UserInfo.objects.create(name="王永和", password="777", age=28)
    # UserInfo.objects.create(name="丁癸丑", password="789", age=54)

    # # 删除
    # UserInfo.objects.filter(id=2).delete()
    # Department.objects.all().delete()

    # # 获取数据
    # # 查询所有数据
    # data_list = UserInfo.objects.all()
    # for obj in data_list:
    #     print(obj.id, obj.name, obj.password, obj.age)
    # # 查询 id=1 的记录
    # data_list = UserInfo.objects.filter(id=1)
    # print(data_list)
    # # 获取 id=1 的第一条记录
    # row_obj = UserInfo.objects.filter(id=1).first()
    # print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

    # 更新数据
    UserInfo.objects.all().update(password=999)
    UserInfo.objects.filter(id=3).update(age=99)
    UserInfo.objects.filter(name="王永和").update(age=88)

    return HttpResponse("成功")

UserInfo.objects.all():选择 UserInfo 表中的所有记录。

.update(password=999):将选中记录的 password 字段值设置为 999
filter(id=3):筛选 id=3 的记录。

.update(age=99):将选中记录的 age 字段值设置为 99。
filter(name="王永和"):筛选 name 为 "王永和" 的记录。

.update(age=88):将选中记录的 age 字段值设置为 88。

运行

修改成功

学习:【最新Python的web开发全家桶(django+前端+数据库)-哔哩哔哩】 https://b23.tv/uJILl2D

相关推荐
NineData5 小时前
NineData 数据库 DevOps 正式支持谷歌云,全面接入 GCP 数据源
运维·数据库·devops·ninedata·gcp·玖章算术·数据智能管理平台
韩立学长5 小时前
Springboot考研自习室预约管理系统1wdeuxh6(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
2503_928411565 小时前
12.18 中后台项目-权限管理
前端·javascript·数据库
云和恩墨7 小时前
OceanBase企业版会话级SQL跟踪实操:DBMS_MONITOR(类Oracle 10046事件)
数据库·sql·oracle·oceanbase
为什么不问问神奇的海螺呢丶7 小时前
oracle 数据库巡检 sql
数据库·sql·oracle
麦麦鸡腿堡7 小时前
MySQL数据库操作指令
数据库·mysql
陈天伟教授13 小时前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
Elastic 中国社区官方博客14 小时前
Elasticsearch:在分析过程中对数字进行标准化
大数据·数据库·elasticsearch·搜索引擎·全文检索
聪明努力的积极向上14 小时前
【MYSQL】字符串拼接和参数化sql语句区别
数据库·sql·mysql
代码or搬砖14 小时前
RBAC(权限认证)小例子
java·数据库·spring boot