Django教程(003):orm操作数据库

news2024/11/14 13:43:07

文章目录

  • 1 orm连接Mysql
    • 1.1 安装第三方模块
    • 1.2 ORM
      • 1.2.1、创建数据库
      • 1.2.2、Django连接数据库
      • 1.2.3、django操作表
      • 1.2.4、创建和修改表结构
      • 1.2.5、增删改查
        • 1.2.5.1 增加数据
        • 1.2.5.2 删除数据
        • 1.2.5.3 获取数据
        • 1.2.5.4 修改数据

1 orm连接Mysql

Django为了使操作数据库更加简单,提供了ORM框架。

1.1 安装第三方模块

pip install mysqlclient

安装成功

在这里插入图片描述

注意,如果安装报错,去官网下载mysqlclient.whl包进行安装,下载地址https://pypi.org/project/mysqlclient/#files,选择适合自己Python版本的包即可

在这里插入图片描述

1.2 ORM

ORM可以帮助我们做两件事:

  • 创建、修改、删除数据库中的表

  • 操作表中的数据(不用写sql语句

    • select
      insert
      update
      

1.2.1、创建数据库

  • 启动mysql服务
  • 自带工具创建数据库
CREATE DATABASE django_learning DEFAULT CHARSET UTF8 COLLATE utf8_general_ci;

在这里插入图片描述

1.2.2、Django连接数据库

创建新的django项目mysite2

django-admin startproject mysite2

创建app

python manage.py startapp app01

找到mysite2/mysite2/settings.py文件,添加DATABASE配置文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_learning',
        'USER': 'root',
        'PASSWORD': '3535',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

1.2.3、django操作表

  • 创建表
  • 删除表
  • 修改表

models.py文件中:

在这里插入图片描述

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

执行上述命令的时候,相当于执行了以下sql代码

"""
create table app01_userinfo(
    id integer primary key autoincrement,
    name varchar(32),
    password varchar(64),
    age int
)
"""

注意:,这个时候数据库是不存在表的

在这里插入图片描述

执行命令创建表,注意:执行命令之前,要注册app

在这里插入图片描述

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

再次查看django_learning数据库中的表信息,app01_userinfo表已经创建成功:

在这里插入图片描述

1.2.4、创建和修改表结构

需要创建表的时候,只需要再次在settings.py中添加如下代码即可,比如需要创建部门表和角色表

class Department(models.Model):
    title = models.CharField(max_length=32)


class Role(models.Model):
    caption = models.CharField(max_length=32)

接着重新执行如下命令

python manage.py makemigrations
python manage.py migrate

查看数据库表信息,创建成功

在这里插入图片描述

注意,删除表或者字段的时候,只需要把代码注释掉,然后重新执行命令就行。

1.2.5、增删改查

1.2.5.1 增加数据

urls.py中添加以下代码

path("orm/", views.orm),

views.py中添加以下代码

def orm(request):
    Department.objects.create(title='销售部')
    Department.objects.create(title='IT部')
    Department.objects.create(title='运行部')
    return HttpResponse("成功")

启动django程序

python manage.py runserver

浏览器访问http://127.0.0.1:8000/orm/
在这里插入图片描述

查看app01_department表中是否有数据

在这里插入图片描述

接着向userinfo表中添加数据

def orm(request):
    # Department.objects.create(title='销售部')
    # Department.objects.create(title='IT部')
    # Department.objects.create(title='运行部')

    UserInfo.objects.create(name="张三", password="123", age=18)
    UserInfo.objects.create(name="李四", password="123", age=18)
    return HttpResponse("成功")

刷新浏览器,查看数据

在这里插入图片描述

1.2.5.2 删除数据
def orm(request):
    # 删除id为2的数据
    UserInfo.objects.filter(id=2).delete()
    # 删除所有数据
    Department.objects.all().delete()
    return HttpResponse("成功")

修改代码之后,刷新浏览器,重新查看数据库中的数据

在这里插入图片描述

1.2.5.3 获取数据

添加如下代码:

def orm(request):
    data_list = UserInfo.objects.all()
    for data in data_list:
        print(data.id, data.name, data.password, data.age)
    return HttpResponse("成功")

刷新浏览器之后,查看控制台的输出

在这里插入图片描述

根据id获取数据,当你确定数据只有一行的时候,可以使用.first()来直接获取数据对象,而不是data_list

def orm(request):
    data_list = UserInfo.objects.all()
    for data in data_list:
        print(data.id, data.name, data.password, data.age)

    data = UserInfo.objects.filter(id=3).first()
    print(data.id, data.name, data.password, data.age)
    return HttpResponse("成功")

在这里插入图片描述

1.2.5.4 修改数据

可以全部修改,也可以根据id条件修改

def orm(request):
        # 更新所有的
    UserInfo.objects.all().update(password='999')
    UserInfo.objects.filter(id=3).update(password='Lisi123')
    return HttpResponse("成功")

刷新浏览器,查看数据信息,修改成功

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业im是什么?

企业IM(Enterprise Instant Messaging)是为企业提供的一种专业化即时通讯系统,也被称为企业级即时通讯。WorkPlus作为一种企业级即时通讯系统,为企业提供了全面的通讯和协作解决方案。本文将详细介绍企业IM的概念、作用以及WorkPl…

lse:一款专为渗透测试和CTF设计的Linux枚举工具

关于linux-smart-enumeration linux-smart-enumeration是一款专为渗透测试和CTF设计的Linux枚举工具,该工具可以帮助广大研究人员收集与本地Linux系统安全相关的信息。 工具特性 该工具从2.0版本开始符合POSIX标准,并且经过了shellcheck和posh测试。它…

【数据库系列】OLTP、OLAP 与 HTAP:数据库系统的三种架构

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

记录些MySQL题集(16)

MySQL 存储过程与触发器 一、初识MySQL的存储过程 Stored Procedure存储过程是数据库系统中一个十分重要的功能,使用存储过程可以大幅度缩短大SQL的响应时间,同时也可以提高数据库编程的灵活性。 存储过程是一组为了完成特定功能的SQL语句集合&#x…

spring security源码追踪理解(一)

一、前言 近期看了spring security相关的介绍,再加上项目所用若依框架的底层安全模块也是spring security,所以想从源码的角度加深下对该安全模块的理解(看源码之前,我们要先有个意识,那就是spring security安全模块主…

阵列信号处理学习笔记(二)--空域滤波基本原理

阵列信号 阵列信号处理学习笔记(一)–阵列信号处理定义 阵列信号处理学习笔记(二)–空域滤波基本原理 文章目录 阵列信号前言一、阵列信号模型1.1 信号的基本模型1.2 阵列的几何构型1.3 均匀直线阵的阵列信号基本模型 总结 前言…

【C语言】 链表实现学生管理系统(堆区开辟空间)

总体思路都能写出来,问题是感觉稍微比之前的麻烦一些,在刚开始创建结构体的时候,并没有去按照链表的思路去写,导致写成了顺序表,后面就一直纠结空间怎么开辟。 链表是由一个头节点和其它申请出来的小节点连起来的&…

UE4学习过程记录——无法更改默认pawn类

一、概述 需要学习UE4,在跟着官方网站的教程中出现一些问题,在这里记录下来。 二、问题阐述 如图所示,在UE4中无法更改默认的pawn类,其下拉无法进行下拉。 三、问题解决 如图所示,需要注意,这个地方在游戏…

SpringMvc有几个上下文

你好,我是柳岸花明。 SpringMVC作为Spring框架的重要组成部分,其启动流程和父子容器机制是理解整个框架运行机制的关键。本文将通过一系列详细的流程图,深入剖析SpringMVC的启动原理与父子容器的源码结构。 SpringMVC 父子容器 父容器的创建 …

【人工智能】深度剖析AI伦理:强化隐私防线,推动算法公平性的核心议题

文章目录 🍊1 人工智能兴起背后的伦理及道德风险1.1 算法偏见与歧视1.2 数据隐私侵权1.3 透明度受限1.4 决策失衡1.5 AI生成内容的危险性 🍊2 建构AIGC伦理观:实现人机共创的永续提升2.1 技术手段与伦理预防2.2 即时警告与紧急关停措施2.3 法…

.NET 通过系统影子账户实现权限维持

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。 02基本介绍 03编码实现 在 Windows 操作系统中,影子用户通常是指那些不易被普通用户或系统管理员察觉的隐藏用户账户&…

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…

《问题002:报错-“Cannot read property ‘envId‘ of undefined“》

微信小程序云开发报错“Cannot read property ‘envId‘ of undefined“原因及解决办法 原因一:可能是你没有配置envId(解决步骤如下) 1、点击开发者工具上的云开发去获取/复制envId 2、找到配置文件envList.js 原因二:如果你已经完成意思步骤还是不行…

【人工智能】基于yolov5使用OrangePi玩转AI图片识别

前言 机缘巧合之下有幸得到了一块OrangePi AIpro边缘计算开发板,非常感谢香橙派官方推出的OrangePi AIpro边缘计算开发板。Orange Pi AI Pro 开发板是由香橙派和华为合作开发的高性能AI开发板,搭载了昇腾AI处理器,提供了8TOPS INT8的计算能力…

用html做python教程01

用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候,看见csdn给我推荐了一个python技能书。 说实话,做得真不错。再看看我自己,有亿点差距😟。 开肝 先创建一个文件,后缀…

【大数据面试题】37 Doris 是怎么保证性能的?

一步一个脚印,一天一道大数据面试题 博主希望能够得到大家的点赞收藏支持!非常感谢 点赞,收藏是情分,不点是本分。祝你身体健康,事事顺心! Doris 是当下大热的 MPP 数据库,下面来聊聊它如何保证…

力扣每日一题1186. 删除一次得到子数组最大和【动态规划】

本题的核心在于对于每个元素,我们分别考虑保留和删除两种状态,并根据前面的状态转移来更新当前状态。最后,遍历所有元素,找到最大和即可。 状态定义 dp[i][0] 表示以第 i 个元素结尾且未删除元素的子数组的最大和。dp[i][1] 表示…

ClamAV:Linux病毒查杀软件安装使用

简介:ClamAV是一个开源防病毒工具包,专为邮件网关上的电子邮件扫描而设计。它提供了许多实用程序,包括一个灵活且可扩展的多线程守护进程、一个命令行扫描程序和用于自动数据库更新的高级工具。该软件包的核心是以共享库的形式提供的防病毒引…

大豆叶部病害soybean-目标检测数据集(包括VOC格式、YOLO格式)

大豆叶部病害soybean-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接:https://pan.baidu.com/s/1DIq2vp-z_fM7Xj_nsBAGBQ?pwdk373 提取码:k373 数据集信息介绍: 共有 1232 张图像和一一对应的标注…

python 打包

#导出依赖文件列表 pip freeze > requirements.txt #安装对应文件 pip install -r requirements.txt #将依赖打成对应whl文件 pip wheel --wheel-dir ./dist -r ./requirements.txt #安装whl文件 pip install …whl