Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

数据库操作

MySQL数据库+pymysql

Django开发操作数据库更简单,内部提供了ORM框架。

安装第三方模块
pip install mysqlclient

ORM可以做的事:

1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】

2、操作表中的数据(不用写SQL语句)。

1、自己创建数据库

1)启动MySQL服务

2)自带工具创建数据库

2、django连接数据库

在setting.py文件中进行配置和修改:此处连接的是本机的mysql数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':  'dbname', # 数据库名字
        'USER':  'root',
        'PASSWORD':  'xxxxxx',
        'HOST':  'localhost',
        'PORT':  3306,
    }
}
3、django操作表
  • 创建表

  • 删除表

  • 修改表

    创建表:在models.py文件中:

class UserInfo(models.Model):
    name = models.CharField(max_length=32) # charfield 字符串类型
    password = models.CharField(max_length=64)
    age = models.IntegerField() # IntegerField 整数类型

相当于在MySQL中运行了

create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
);

然后,在terminal中依次执行命令:(注意:app需要提前注册。)

python manage.py makemigrations
python manage.py migrate

即可在mysql中创建好app01_userinfo这个文件

在这里插入图片描述

*在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:

  1. 手动输入一个值

  2. 设置默认值

    size = models.IntegerField(default=2)
    
  3. 允许为空

    data = models.IntegerField(null=True, blank=True)
    

在开发中如果想要对表结构进行调整:

  • 在models.py文件中操作类即可。

  • 在terminal执行命令

    python manage.py makemigrations
    python manage.py migrate
    

数据的增删改查

from app01 import models

1、新建

    # ###新建###
    models.Department.objects.create(title="销售部")
    models.Department.objects.create(title="IT部")
    models.Department.objects.create(title="运营部")
    models.UserInfo.objects.create(name="dumpling", password="123", age="22")
    models.UserInfo.objects.create(name="noodles", password="111", age="20")

2、删除

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

3、查看(获取数据)

    ###获取数据###
    #获取的是列表,列表是一行一行的数据
    #data_list = [行(对象) 行 行]   QuerySet类型
    data_list = models.UserInfo.objects.all()
    for obj in data_list:
            print(obj.id, obj.name, obj.password, obj.age)

    # 寻找id=1的数据。data_list = [对象,],这个方法取到的还是QuerySet类型
    data_list = models.UserInfo.objects.filter(id=1)
    # 取对象中的第一个,这个方法就能直接将第一行对象取出来
    row_obj = models.UserInfo.objects.filter(id=1).first()
    print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

4、更新

	models.UserInfo.objects.all().update(password=999)
    models.UserInfo.objects.filter(id=2).update(age=999)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全进阶学习第八课——信息收集

文章目录 一、什么是信息收集?二、信息收集的原则三、信息收集的分类1.主动信息收集2.被动信息收集 四、资产探测1、Whois查询#常用网站: 2、备案信息查询#常用网站: 3、DNS查询#常用网站: 4、子域名收集#常用网站:#常…

Linux编辑器 - vim使用

1.vim的基本概念 Vim是一个广泛使用的文本编辑器,它是在Unix和Linux系统中常用的命令行文本编辑器之一。 vim的主要三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是 命令模式 ( command mode )、 插入模式 &#xff0…

html学习5(表单)

1、表单是一个包含表单元素的区域,用于收集用户的输入信息。 2、表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表(select)、单选框(radio-buttons&#xff09…

MySQL篇

文章目录 一、MySQL-优化1、在MySQL中,如何定位慢查询?2、SQL语句执行很慢, 如何分析呢?3、了解过索引吗?(什么是索引)4、索引的底层数据结构了解过嘛 ?5、什么是聚簇索引什么是非聚簇索引 ?6、知道什么是回表查询嘛…

go初识iris框架(三) - 路由功能处理方式

继了解get,post后 package mainimport "github.com/kataras/iris/v12"func main(){app : iris.New()//app.Handle(请求方式,url,请求方法)app.Handle("GET","/userinfo",func(ctx iris.Context){path : ctx.Path()app.Logger().Info(path) //获…

CEC2022:CEC2022测试函数及多种智能优化算法求解CEC2022对比

目录 一、CEC2022测试函数 二、多种智能优化算法求解CEC2022 2.1 本文参与求解CEC2022的智能优化算法 2.2 部分测试函数运行结果与收敛曲线 三、带标记收敛曲线代码(获得代码后可自行更改) 一、CEC2022测试函数 CEC2022测试集共有12个单目标测试函数&#x…

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…

VMware Linux Centos 配置网络并设置为静态ip

在root用户下进行以下操作 1. 查看子网ip和网关 (1)进入虚拟网络编辑器 (2)进入NAT设置 (3)记录子网IP和子网掩码 2. 修改网络配置文件 (1)cd到网络配置文件路径下 [rootlo…

【element-ui】form表单初始化页面如何取消自动校验rules

问题描述:elementUI表单提交页面,初始化页面是获取接口数据,给form赋值,但是有时候这些会是空值情况,如果是空值,再给form表单赋值的话,页面初始化时候进行rules校验会不通过,此时前…

OpenMMLab MMDetectionV3.1.0-SAM(环境安装、模型测试、训练以及模型后处理工具)

OpenMMLab Playground 概况 当前通用目标检测的研究方向正在朝着大型多模态模型发展。除了图像输入之外,最近的研究成果还结合了文本模式来提高性能。添加文本模态后,通用检测算法的一些非常好的属性开始出现,例如: 可以利用大量…

在政策+市场双轮驱动下,深眸科技助力机器视觉行业走向成熟

近年来,随着人工智能发展的不断提速,机器视觉作为其重要的前沿分支,凭借着机器代替人眼来做测量和判断的能力,广泛应用于工业领域的制造生产环节,用来保证产品质量、控制生产流程、感知环境等,并迸发出强劲…

AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】

Midjourney案例分享 图片预览 迪士尼风格|可爱头像 高清原图及关键词Prompt已经放在文末网盘,需要的自取 在数字艺术的新时代,人工智能绘画已经迅速崭露头角。作为最先进的技术之一,AI绘画结合了艺术和科学,开启了一…

【工作】vant的search组件手动聚焦

背景 为了方便用户使用,第一次进来时默认输入框聚焦,但是当用户并没有输入手机号,点击按钮时,需要给一个友好提示,并且输入框重新聚集上。 过程 最开始以为search组件这个方法肯定已经实现了并且看官网文档上也有对…

redis的事务、redis持久化方案、Java操作redis数据库

五、redis的事务 开启事务: 要等左边的提交事务,右边才能拿到修改后的值 本来name不能增加,会报错,但是事务中没提交不知道错 此时提交数据: redis事务将成功的正常提交,失败的才回滚,所以不具备…

【计算机网络】11、网桥(bridge)、集线器(hub)、交换机(switch)、路由器(router)、网关(gateway)

文章目录 一、网桥(bridge)二、集线器(hub)三、交换机(switch)四、路由器(router)五、网关(gateway) 对于hub,一个包过来后,直接将包转发到其他口。 对于桥&…

边写代码边学习之卷积神经网络CNN

1. 卷积神经网络CNN 卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习神经网络的架构,主要用于图像识别、图像分类和计算机视觉等任务。它是由多层神经元组成的神经网络,其中包含卷积层、池化层和全连接…

HCIP——前期综合实验

前期综合实验 一、实验拓扑二、实验要求三、实验思路四、实验步骤1、配置接口IP地址2、交换机配置划分vlan10以及vlan203、总部分部,骨干网配置OSPF分部总部骨干网 4、配置BGP建立邻居关系总部骨干网分部 5、发布用户网段6、将下一跳改为本地7、允许AS重复8、重发布…

Java中集合容器详解:简单使用与案例分析

目录 一、概览 1.1 Collection 1. Set 2. List 3. Queue 1.2 Map 二、容器中的设计模式 迭代器模式 适配器模式 三、源码分析 ArrayList 1. 概览 2. 扩容 3. 删除元素 4. 序列化 5. Fail-Fast Vector 1. 同步 2. 扩容 3. 与 ArrayList 的比较 4. 替代方案…

C#——多线程之Thread

C#——多线程之Thread 前言一、Thread是什么?二、各应用场景以及实例分析1.前台线程和后台线程:2.异步处理3.线程状态及手动销毁线程4.线程同步/等待线程完成 总结 前言 上次简单讲述了关于多线程中Task的相关应用以及场景。今天我们来看一下多线程中Th…

【LeetCode】27. 移除元素

题目大概意思是剔除nums数组中出现的所有val值。可以用快慢双指针法来做。 快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。 class Solution {public int removeElement(int[] nums, int val) {//快慢指针法in…