当前位置: 首页 > news >正文

【python】Django——连接mysql数据库

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~

【Django专栏】
Django——django简介、django安装、创建项目、快速上手
Django——templates模板、静态文件、django模板语法、请求和响应
Django——连接mysql数据库

Django——连接mysql数据库

  • 连接MySQL数据库
    • 1.安装MySQL驱动程序
    • 2.创建数据库
    • 3.配置settings.py文件
    • 4.django操作表
      • django操作表语句与mysql语句的关系
      • 创建表
      • 修改表
      • 插入数据
      • 删除数据
      • 查询数据
      • 更新数据
    • 5.迁移数据库
      • 报错解决

连接MySQL数据库

ORM(Object-Relational Mapping)是一种编程技术,它允许开发者使用面向对象的方式来操作数据库,而不必直接编写SQL语句。在Django中,ORM是通过Django自带的django.db.models模块来实现的。

  • 创建、修改、删除数据库中的表【无法创建数据库】
  • 操作表中的数据

1.安装MySQL驱动程序

首先,确保你已经安装了适用于Python的MySQL驱动程序。可以使用pip命令来安装,例如:

pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

2.创建数据库

需要在mysql中完成
在这里插入图片描述

3.配置settings.py文件

打开你的Django项目中的settings.py文件,找到DATABASES设置部分,并进行如下配置:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'your_database_name','USER': 'your_mysql_username','PASSWORD': 'your_mysql_password','HOST': 'localhost','PORT': '3306',}
}

确保将your_database_nameyour_mysql_usernameyour_mysql_password替换为你的MySQL数据库的名称、用户名和密码。

4.django操作表

django操作表语句与mysql语句的关系

在Django中,操作表的语句与直接在MySQL中执行的SQL语句有着密切的关系。Django的ORM(Object-Relational Mapping)提供了一种Pythonic的方式来操作数据库,它将Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。

下面是一些常见的数据库操作,以及它们在Django ORM中的对应方式和在MySQL中的原生SQL语句:

创建表

Django ORM:

# 在models.py中定义模型
class UserInfo(models.Model):
name = models.CharField(max_length=64)
password = models.CharField(max_length=128)
age = models.IntegerField()

MySQL原生SQL:

CREATE TABLE application01_userinfo (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64),
password VARCHAR(128),
age INT

使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:

python manage.py makemigrations  # 生成数据库迁移文件
python manage.py migrate  # 应用数据库迁移

修改表

新增一个列
两种选择:
在这里插入图片描述
1) 立即提供一次性默认值(将在该列具有null值的所有现有行上设置)
2) 退出,在models.py中添加一个默认值或允许为空

# 添加默认值
salary = models.IntegerField(default=5000)
# 允许为空
salary = models.IntegerField(null=True, blank=True)

在这里插入图片描述

插入数据

# 原生sql语句:insert into application01_userinfo(name, password, age) VALUES ('quanquan', '123', 18)
# UserInfo.objects.create(name=name, password=password, age=age)def register(request):# POST方式if request.method == 'POST':# 处理表单提交name = request.POST.get('name', '')password = request.POST.get('password', '')age = request.POST.get('age')# 构造上下文数据context = {'name': name,'password': password,'age': age,}# 往数据库插入数据UserInfo.objects.create(name=name, password=password, age=age)# 渲染模板并返回响应return render(request, 'result.html', context)else:# 显示表单页面return render(request, 'register.html')

register.html

<!DOCTYPE html>
<html>
<head><title>输入信息</title>
</head>
<body><h2>请输入您的信息</h2><form method="post" action="/register/">
<!--        {% csrf_token %} 是 Django 模板标记,用于防止跨站请求伪造(CSRF)攻击。-->
<!--        Django 要求所有 POST 的表单都要包含这个标记,以确保安全性。-->{% csrf_token %}<label for="name">姓名:</label><input type="text" id="name" name="name"><br><br><label for="password">密码:</label><input type="text" id="password" name="password"><br><br><label for="age">年龄:</label><input type="text" id="age" name="age"><br><br><input type="submit" value="提交"></form>
</body>
</html>

result.html

<!-- result.html -->
<!DOCTYPE html>
<html>
<head><title>提交结果</title>
</head>
<body><h2>提交结果</h2><p>您提交的信息如下:</p><p>姓名:{{ name }}</p><p>密码:{{ password }}</p><p>年龄:{{ age }}</p>
</body>
</html>

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

删除数据

# 删除数据
UserInfo.objects.filter(id=1).delete()
UserInfo.objects.all().delete()

查询数据

# 查询数据
data_list = UserInfo.objects.all()# data_list = [行对象,行对象,...,行对象]	QuerySet类型print(data_list)	
# <QuerySet [<UserInfo: UserInfo object (3)>, <UserInfo: UserInfo object (4)>]>for obj in data_list:print(obj.name,obj.password,obj.age)
# 圈圈 123456 20
# 圈圈1 123456 11

更新数据

# 更新 id 为 1 的记录的 name 和 age 字段
UserInfo.objects.filter(id=1).update(name='new_name', age=30)

Django的ORM会将我们的Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。这种方式简化了数据库操作的复杂性,同时也提高了代码的可读性和可维护性。

5.迁移数据库

使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:

python manage.py makemigrations  # 生成数据库迁移文件
python manage.py migrate  # 应用数据库迁移

Django 就会根据这个模型创建相应的 MySQL 表。假设你的应用名为 application01,模型名为userinfo,那么在 MySQL 数据库中就会生成一个名为 application01_userinfo的表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报错解决

报错:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)
原因:django与mysql版本不兼容
解决方式:
1.升级mysql版本(SELECT VERSION() 我的版本是5.5.40),有点麻烦不想升级
2.降低django版本(需要先搜一下版本兼容情况)

pip uninstall django
pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

相关文章:

【python】Django——连接mysql数据库

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——连接mysql数据库 连接MySQL数据库…...

北京君正客户应用案例:掌静脉3D人脸猫眼视屏智能锁

凯迪仕在今年4月发布了智能锁旗舰新品K70 Pro Max掌静脉3D人脸猫眼视屏智能锁&#xff0c;随即这款新品也成了行业热议的焦点。凯迪仕每次新品都力求突破精益求精&#xff0c;不仅追求科技感、高级感与品质感&#xff0c;而且赋予科技温度&#xff0c;带来人文化的关怀。K70 Pr…...

人工智能+游戏 会带来什么

“人工智能游戏” 写在前面 随着人类生活水平的日益提高&#xff0c;游戏正在为越来越多的人们带去欢乐。同时&#xff0c;作为21世纪新兴科学技术的人工智能&#xff0c;也正在研究人员的努力下不断向前突破。那么&#xff0c;这两列高速前进的“火车”能否接轨并行呢&#…...

人工智能基础_机器学习030_ElasticNet弹性网络_弹性回归的使用---人工智能工作笔记0070

然后我们再来看elastic-net弹性网络,之所以叫弹性是因为,他融合了L1和L2正则,可以看到 他的公式 公式中有L1正则和L2正则两个都在这个公式中 可以看到弹性网络,在很多特征互相联系的时候,非常有用,比如, 相关性,如果数学好,那么物理也好,如果语文好,那么英语也好 这种联系 正…...

Python算法——平衡二叉树(AVL)

Python中的平衡二叉搜索树&#xff08;AVL树&#xff09;算法详解 平衡二叉搜索树&#xff08;AVL树&#xff09;是一种自平衡的二叉搜索树&#xff0c;它通过在插入或删除节点时进行旋转操作来保持树的平衡性。在AVL树中&#xff0c;任何节点的两个子树的高度差&#xff08;平…...

公开可用的API 合集

这是一个开源项目列表&#xff0c;收录了一些公开可用、无需注册或认证即可使用的API接口。 这个项目解决了开发者们在寻找合适的API时遇到的各种困难&#xff0c;如无法快速定位、难以筛选等问题&#xff0c;为他们提供了便捷的一站式查询服务。 项目是“public-apis”&…...

单片机编程原则

多任务编程的概念 方式一&#xff1a;实时操作系统&#xff08;不建议新手使用&#xff09; 方式二 &#xff1a;裸机多任务模型 逻辑多任务的基本原理 把三个任务分别分为一个一个的片段 然后先执行任务一的第一个切片 执行第二个任务的第一个片段 执行第三个任务的第一个片…...

开源短剧付费变现小程序源码系统+在线开通会员+在线充值 带完整的搭建教程

说起微短剧&#xff0c;相信大家都不会陌生。相比传统网剧冗长的剧情&#xff0c;微短剧最大的看点&#xff0c;是时长短、高浓缩&#xff0c;顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头&#xff0c;但却非常“上头”的虚…...

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库&#xff0c;还有丰富的第三方库&#xff0c;Python在数据处理、科学计算、数学建模、数据挖…...

电商平台为什么需要及时部署ssl证书?

电商平台为什么需要及时部署ssl证书&#xff1f; 21世纪以来&#xff0c;互联网技术得到了快速的发展和应用上的普及&#xff0c;为生活、工作、学习都带来了巨大的变化。现代社会中&#xff0c;快节奏的生活让人们的购物方式也发生了极大的转变&#xff0c;逐渐由线下转为了线…...

卡码网语言基础课 | 12. 位置互换

通过本次练习&#xff0c;将要学习到以下C知识点&#xff1a; 位置互换交换变量字符串 题目&#xff1a;给定一个长度为偶数位的字符串&#xff0c;请编程实现字符串的奇偶位互换。 奇偶位互换是指字符串的奇数位和偶数位相互交换位置 即&#xff1a;第一位和第二位交换&…...

用DOM来读取XML时要注意的一些概念

2023年11月15日&#xff0c;周三下午 在 DOM&#xff08;文档对象模型&#xff09;中&#xff0c;有一些重要的概念和术语&#xff1a; 文档对象&#xff08;Document Object&#xff09;&#xff1a;表示整个 XML 文档的根节点&#xff0c;它是 DOM 树的入口点。元素节点&…...

openresty安装配置,执行shell脚本

下载并解压 OpenResty 源代码&#xff1a; bashCopy code wget https://openresty.org/download/openresty-1.19.9.1.tar.gz tar -zxvf openresty-1.19.9.1.tar.gz cd openresty-1.19.9.1 运行 ./configure 并指定安装路径&#xff1a; bashCopy code ./configure --prefix…...

解决Dockerfile中 Could not initialize class sun.awt.X11FontManager错误

Dockerfile中增加命令 RUN yum install dejavu-sans-fonts fontconfig -y如果您使用的是基于Alpine Linux的发行版&#xff0c;可以使用apk命令来安装DejaVu Sans字体和fontconfig工具 RUN apk update RUN apk add ttf-dejavu fontconfig...

Kubernetes(k8s)进阶

文章目录 Kubernetes进阶一、Namespace&#xff08;名称空间&#xff09;1.namespace介绍2.管理namespace查看namespace创建namespaceyaml文件配置namespace 二、Pod&#xff08;最小基本部署单元&#xff09;1.pod介绍2.管理pod创建并运行pod查看pod信息访问pod删除podyaml文件…...

[Vue 配置] Vite + Vue3 项目配置和使用 NProgress

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/mfmsrf9tz98ox3qg 安装 pnpm i nprogress配置 NProgress 其他更多可参考&#xff0c;仓库地址&#xff1a;https://github.com/rstacruz/nprogress 在 src/config/nprogress.js 中进行配置 是否展示右上角圆…...

Android MQTT开发之 Hivemq MQTT Client

使用一个开源库&#xff1a;hivemq-mqtt-client&#xff0c;这是Java生态的一个MQTT客户端框架&#xff0c;需要Java 8&#xff0c;Android上使用的话问题不大&#xff0c;需要一些额外的配置&#xff0c;下面列出了相关的配置&#xff0c;尤其是 packagingOptions&#xff0c;…...

【Maven教程】(十一):使用 Maven 构建 Web应用 —— 使用 jetty-maven-plugin 进行测试、使用 Cargo 实现自动化部署~

Maven 使用 Maven 构建 Web应用 1️⃣ Web 项目的目录结构2️⃣ account-service2.1 account-service的 POM2.2 account-service 的主代码 3️⃣ account-web3.1 account-web 的POM3.2 account-web 的主代码 4️⃣ 使用 jetty-maven-plugin 进行测试5️⃣ 使用 Cargo 实现自动…...

番外 2 : LoadRunner 的安装以及配置

LoadRunner 的安装以及配置教程 一 . 配置 IE 浏览器二 . 安装 LoadRunner 工具三 . 修改默认浏览器的配置四 . 设置 LoadRunner 能够获取本地资源 Hello , 大家好 , 又给大家带来新的专栏喽 ~ 这个专栏是专门为零基础小白从 0 到 1 了解软件测试基础理论设计的 , 虽然还不足以…...

win10正确配置tensorRT环境

目的 使用tensorRT进行网络模型部署&#xff0c;加快推理速度 方法 安装tensorRT的过程需要对各种组件的版本进行匹配 前置安装套件有&#xff1a; 1、CUDA 2、cuDNN 3、pyCUDA 4、tensorflow或pytorch 主要记录tensorRT安装: tensorRT安装配置查询 步骤: 1、去tensorRT官网…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...