Django操作数据库

news2024/11/27 4:19:14

Django操作数据库

  • 1、ORM框架
  • 2、ORM-创建数据库
  • 3、ORM-连接数据库
  • 4、ORM-操作表
    • 4.1、类创建表
    • 4.2、修改表结构
      • 4.2.1、删除表结构
      • 4.2.2、新增表结构
  • 5、ORM-增删改查
    • 5.1、新增数据
    • 5.2、删除数据
    • 5.3、查询数据
    • 5.4、更新数据

1、ORM框架

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

在这里插入图片描述

ORM可以帮助我们做两件事:
创建、修改、删除数据库中的表(不用写SQL语句),但是无法创建数据库
操作表中的数据(不用写SQL语句),Django会利用ORM将代码翻译成SQL语句来操作数据库

  • 使用ORM之前还需安装第三方模块
pip install mysqlclient

在这里插入图片描述

2、ORM-创建数据库

由于ORM无法创建数据库,因此需要我们利用mysql来创建。

  • 启动mysql并输入密码登录
mysql -u root -p
  • 创建数据库
 create database djangodb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • 查询数据库看是否创建成功
 show databases;

3、ORM-连接数据库

  • 在settings.py文件中进行配置和修改

在这里插入图片描述

  • 删去db.sqlite3,并修改连接数据库的代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 引擎
        'NAME': 'djangodb',  # 数据库名字
        'USER': 'root',   # 用户名
        'PASSWORD': 'root',    # 密码
        'HOST': '127.0.0.1',  # 安装MySQL的机器,一般是本机
        'PORT': 3306,
    }
}

4、ORM-操作表

4.1、类创建表

  • 在models.py中创建一个类,类中写入若干字段名

在这里插入图片描述

  • 编写类之后,ORM会根据类自动执行下述SQL语句来生成表(下述的SQL语句不需要自己写)
create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(50),
    password varchar(60),
    age int
)
  • 表名:app名称_类名小写
  • 类中的字段对应表中的列
  • 自动生成id列,且是自增、主键
  • 此时我们查询数据库可以看到并未创建该表

在这里插入图片描述

  • 上述操作只是生成表,如果想让django在数据库中创建该表,还需要执行下述命令
python manage.py makemigrations
python manage.py migrate

执行命令之前需要注意以下几点:

  • 确保app提前被注册
  • 当前的目录为根目录,必须包含manage.py,这样它才会发挥作用
  • 使用的python解释器必须安装了mysqlclient
  • 查询数据库的表时可以看到已经创建成功

在这里插入图片描述

生成很多其他的表是因为Django在执行上述命令时会去找每个app的models中的类来生成表,而Django默认提供了很多其他的app,这些app也依赖于一些表,因此会生成内部默认的一些表,如果不需要注释掉即可。
在这里插入图片描述

4.2、修改表结构

4.2.1、删除表结构

当想要删除表或表中的列时,只需要将models.py中的对应代码删掉或注释掉,重新执行下述命令即可

python manage.py makemigrations
python manage.py migrate

4.2.2、新增表结构

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

  • 在表中新增size列

在这里插入图片描述

  • 重新执行上述命令时会出现下述选择(这里选择第一种选择)

在这里插入图片描述

  • 第二种选择是在代码中添加默认值

在这里插入图片描述

  • 第三种选择是允许数据为空

在这里插入图片描述

5、ORM-增删改查

5.1、新增数据

类名.objects.create(字段名=,...)

在这里插入图片描述
在这里插入图片描述

5.2、删除数据

  • 根据筛选条件删除数据
类名.objects.filter(筛选条件).delete()
  • 删除所有数据
类名.objects.all().delete()

5.3、查询数据

  • 获取符合条件的所有数据
data_list = 类名.objects.all()
  • 根据筛选条件获取数据
data_list = 类名.objects.filter(筛选条件)
  • 获取第一条数据
obj = 类名.objects.filter(筛选条件).first()

all()和filter()获取的数据类型均为QuerySet类型,可以看作数据列表类型,即[对象,对象,对象],而first()获得的是对象类型

5.4、更新数据

  • 更新所有数据
类名.objects.all().update(更新的字段名=新数据)
  • 根据筛选条件更新数据
类名.objects.filter(筛选条件).update(更新的字段名=新数据)

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

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

相关文章

沈阳乐晟睿浩科技有限公司技术创新,奠定坚实基础

在当今数字经济蓬勃发展的时代,电子商务以其独特的魅力和无限潜力,正深刻改变着人们的消费习惯与商业模式。在这场变革中,沈阳乐晟睿浩科技有限公司凭借其敏锐的市场洞察力、强大的技术实力以及前瞻性的战略眼光,迅速崛起&#xf…

Java爬虫:获取数据的入门详解

在数字化时代,数据已成为最宝贵的资产之一。无论是市场研究、客户洞察还是产品开发,获取大量数据并从中提取有价值的信息变得至关重要。Java,作为一种成熟且功能强大的编程语言,为编写爬虫提供了强大的支持。Java爬虫可以帮助我们…

月入30万!用AI做养生赚麻了,全网最全最详细的变现教程

现在不养生,将来养医生! 秋冬将至,又到了宝子们养生意识季节性觉醒的时间了,这时候,网上关于养生的内容搜索量激增,也催生了AI养生自媒体创作的热潮。 比如这位博主采用养生文案搭配AI简笔画的形式&#…

拥抱新质生产力 | 大势智慧亮相第12届中国测绘地理信息技术装备博览会

10月15日—17日,由中国测绘学会主办的2024中国测绘地理信息科学技术年会暨中国测绘地理信息技术装备博览会在河南省郑州市隆重举行。 10月15日,第12届中国测绘地理信息技术装备博览会在郑州国际会展中心盛大开幕。 大势智慧CTO张帆受邀出席博览会开幕式…

pdman在关系图中展示表的后排字段

1.当想在关系图中通过箭头指向来表明表与表之间的关系时,发现对应关联表的关联字段不展示(原表该字段展示在后排,关系图只展示前排字段) 2.找到对应表,对该字段手动设置可见 3.保存后再次进入关系图即可看到 3.1 3.2…

LabVIEW程序员可以从哪几个方面提升自己?有没有详细的路线图?

作为一名LabVIEW程序员,要在快速发展的技术领域保持竞争力并不断提升自己,需要从多个方面进行持续的学习和实践。下面我将为你详细说明LabVIEW程序员提升自己的几个关键方向,并给出具体的成长路线图。 1. 夯实基础:掌握LabVIEW的…

解决mac ssh端终端只有黑白颜色的问题

主要是因为没有开启颜色配置。修改下文件即可 cd ~ vi .zshrc 内容如下 export LS_OPTIONS--colorauto export CLICOLORYes export LSCOLORSExgxcxdxcxegedabagGxGx 关闭终端后重登录,这下有颜色了好看了 配色:目录蓝 可执行绿 软链青 颜色配置 详…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版)》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版)》(杨章伟,刘祥淼)【摘要 书评 试读】- 京东图书 …

CTFHUB技能树之SQL——字符型注入

开启靶场,打开链接: 直接指明是SQL字符型注入,但还是来判断一下 (1)检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 (2)猜字段数 1 order by 2# 1 order…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

MySQL 数据库的备份与恢复:最佳实践与深度探讨

MySQL 数据库的备份与恢复:最佳实践与深度探讨 在现代应用程序和企业系统中,数据库是其核心组件之一,负责存储和管理大量的关键数据。MySQL 作为一种广泛应用的开源数据库管理系统,支持高性能和可扩展性,被广泛应用于…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用,但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面(CLI)来查看 VPC 的使用情况 列出子网: aws ec2 describe-subnets …

每日一道算法题(Leetcode 20)

Whats past is prologue. 凡是过去,皆为序章。 题目 分析 1. 我们可以用栈的结构来解决这道题。 2. 我们使用while循环,每次读取字符串中一个元素进行操作,直到最后读取到 \0为止。 3. 如果遇见 (, [ ,{ 这三种左括号,则把该左…

SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!

原文链接:SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623317&idx1&sn87516da827641ffd124519f929e5da26&chksmfa8da372cdfa2a643b7b806b806b31e025382b9896723d891ffd030…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件,它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

2024双十一最建议买的东西有哪些?双11购物清单大全分享

双十一即将来临,各大品牌都推出了令人心动的优惠活动,让我们能够以更加实惠的价格拥有心仪的好物。其中数码家电的产品,也是迎来了一波降价高潮,因此对于数码家电爱好者而言,双十一是入手的绝佳时机!本期我…

HTML+CSS实现点赞效果

效果演示 HTMLCSS实现点赞效果 HTML <div class"heart-container" title"Like"><input type"checkbox" class"checkbox" id"Give-It-An-Id"><div class"svg-container"><svg viewBox&qu…

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播

深度学习面试笔试之前向神经网络-多层感知器、损失函数、反向传播 1. 什么是神经网络1.1 什么是感知器1.2 神经网络的结构1.3 为什么神经网络具有非线性切分能力 2. 神经网络的计算过程2.1 计算过程2.2 随机初始化模型参数2.3 激活函数2.3.1 激活函数有哪些2.3.2 优缺点2.3.3 为…