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

python操作mysql数据库详解

使用Python操作MySQL数据库

MySQL是一种关系型数据库管理系统,它可以用来存储和管理大量的数据。之前介绍了大部分主流数据库,今天将介绍如何使用Python来操作MySQL数据库。

安装MySQL

首先,我们需要安装MySQL服务器,可以从MySQL官网下载安装包,也可以使用系统自带的包管理器安装。

安装MySQL驱动

接下来,我们需要安装MySQL的驱动,可以使用pip安装:

pip install mysql-connector-python

连接MySQL

接下来,我们需要连接MySQL服务器,可以使用MySQL Connector/Python模块中的connect()函数:

import mysql.connector
# 连接MySQL服务器
conn = mysql.connector.connect(host="localhost",user="root",passwd="123456"
)

mysql指令

MySQL 指令用法作用
SELECTSELECT * FROM table_name从表中检索数据
INSERTINSERT INTO table_name VALUES (value1, value2,…)向表中插入新记录
UPDATEUPDATE table_name SET column1=value1, column2=value2,…更新表中的记录
DELETEDELETE FROM table_name WHERE condition从表中删除记录
CREATECREATE TABLE table_name (column1 datatype, column2 datatype,…)创建新表
ALTERALTER TABLE table_name ADD column_name datatype向表中添加新列
DROPDROP TABLE table_name删除表

创建数据库

接下来,我们可以使用MySQL Connector/Python模块中的cursor()函数创建一个游标,然后使用execute()方法来执行SQL语句:

# 创建数据库
cursor = conn.cursor()
cursor.execute("CREATE DATABASE mydb")

创建表

接下来,我们可以使用MySQL Connector/Python模块中的execute()方法来创建表:

# 创建表
cursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

插入数据

接下来,我们可以使用MySQL Connector/Python模块中的execute()方法来插入数据:

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('John', 20)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

查询数据

接下来,我们可以使用MySQL Connector/Python模块中的execute()方法来查询数据:

# 查询数据
cursor.execute("SELECT * FROM users")
# 获取查询结果
result = cursor.fetchall()
# 打印结果
for row in result:print(row)

更新数据

接下来,我们可以使用MySQL Connector/Python模块中的execute()方法来更新数据:

# 更新数据
cursor.execute("UPDATE users SET age = 30 WHERE name = 'John'")

删除数据

最后,我们可以使用MySQL Connector/Python模块中的execute()方法来删除数据:

# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Bob'")

结束连接

最后,我们需要使用MySQL Connector/Python模块中的close()方法来结束连接:

# 结束连接
conn.close()

学生管理系统demo

# 导入MySQL驱动
import mysql.connector
# 连接数据库
conn = mysql.connector.connect(host='localhost', user='root', password='123456', database='student_management')
cursor = conn.cursor()
# 管理员登录
def admin_login():username = input('请输入管理员账号:')password = input('请输入管理员密码:')sql = 'select * from admin where username=%!s(MISSING) and password=%!s(MISSING)'cursor.execute(sql, (username, password))result = cursor.fetchone()if result:print('登录成功!')return Trueelse:print('登录失败!')return False
# 添加学生信息
def add_student():stu_no = input('请输入学号:')stu_name = input('请输入姓名:')stu_age = input('请输入年龄:')sql = 'insert into student (stu_no, stu_name, stu_age) values (%!s(MISSING), %!s(MISSING), %!s(MISSING))'cursor.execute(sql, (stu_no, stu_name, stu_age))conn.commit()print('添加学生信息成功!')
# 删除学生信息
def delete_student():stu_no = input('请输入要删除的学号:')sql = 'delete from student where stu_no=%!s(MISSING)'cursor.execute(sql, (stu_no,))conn.commit()print('删除学生信息成功!')
# 修改学生信息
def update_student():stu_no = input('请输入要修改的学号:')stu_name = input('请输入新的姓名:')stu_age = input('请输入新的年龄:')sql = 'update student set stu_name=%!s(MISSING), stu_age=%!s(MISSING) where stu_no=%!s(MISSING)'cursor.execute(sql, (stu_name, stu_age, stu_no))conn.commit()print('修改学生信息成功!')
# 查询学生信息
def query_student():stu_no = input('请输入要查询的学号:')sql = 'select * from student where stu_no=%!s(MISSING)'cursor.execute(sql, (stu_no,))result = cursor.fetchone()if result:print('学号:%!s(MISSING),姓名:%!s(MISSING),年龄:%!s(MISSING)' %!((MISSING)result[0], result[1], result[2]))else:print('查无此人!')
# 主函数
def main():if admin_login():while True:print('1. 添加学生信息')print('2. 删除学生信息')print('3. 修改学生信息')print('4. 查询学生信息')print('5. 退出系统')choice = input('请输入您的选择:')if choice == '1':add_student()elif choice == '2':delete_student()elif choice == '3':update_student()elif choice == '4':query_student()elif choice == '5':breakelse:print('输入错误,请重新输入!')
if __name__ == '__main__':main()

结论

本文介绍了如何使用Python来操作MySQL数据库,包括安装MySQL服务器、安装MySQL驱动、连接MySQL、创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等操作。

相关文章:

python操作mysql数据库详解

使用Python操作MySQL数据库 MySQL是一种关系型数据库管理系统,它可以用来存储和管理大量的数据。之前介绍了大部分主流数据库,今天将介绍如何使用Python来操作MySQL数据库。 安装MySQL 首先,我们需要安装MySQL服务器,可以从MyS…...

netty群聊系统

1设计思路:启动一个服务端,多个客户端第一个客户端启动时,会告诉服务器上线了第二个客户端启动时,告诉服务器上线,并且通知第一个启动的客户端第三个客户端启动时,告诉服务器上线,并且通知第一个…...

Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 SharedPreferences 是 Android 平台上轻量级的 K-V 存储框架,亦是初代 K-V 存储框架,至今被很多应用沿用。 有的…...

在windows中使用tomcat搭建Jenkins

1、 准备环境:JDK JDK官网下载:https://download.oracle.com/java/19/latest/jdk-19_windows-x64_bin.msi 2、 tomcat包 tocat官网下载:https://tomcat.apache.org/download-90.cgi 3、 Jenkins.war包 Jenkins官网下载:https://mi…...

Linux系统

linux系统 世界上最重要的服务器端操作系统。 创建新目录 mkdir app mkdir -m 目录权限 目录名 创建有权限的目录名。 创建一个空白文件 touch app.txt创建一个文件。 cat创建一个文件。 vi/vim创建一个文件。 nano创建一个文件。 truncate创建一个文件。 pwd查看当前目录。 rm…...

Mel Frequency Cepstral Coefficients (MFCCs)

wiki里说 在声音处理中,梅尔频率倒谱( MFC ) 是声音的短期功率谱的表示,基于非线性梅尔频率标度上的对数功率谱的线性余弦变换。 倒谱和MFC 之间的区别在于,在 MFC 中,频带在梅尔尺度上等距分布,这比正常频谱中使用的线…...

第七讲---贪心(上课)

1.股票买卖 一、贪心 考虑一种方案,在每次上升的前一天购入股票,并在上升后的当天卖出的方案 if (w[i] > w[i - 1])res w[i] - w[i - 1];接下来证明该贪心思路得出的方案即是最优解。 (1)证明贪心解 ≥ 最优解: …...

计算机如何思考与图灵完备

图灵完备是针对一套数据操作规则而言的概念,数据操作规则可以是一门编程语言,也可以是计算机实现里面的指令集,比如C/C++是图图灵完备的,通用CPU也是图灵完备的,但是GPU却不一定是图灵完备的。说白了图灵完备定义了一套规则,当这套规则可以实现图灵迹模型里的全部功能时,…...

惠普LaserJet M1005 MFP报错b2

故障现象: 惠普LaserJet M1005 MFP开机后直接报b2错误; 检测维修: 故障大意是:机器的硬件可能出现点突变,此问题建议联系当地维修中心进行处理。...

网络协议(TCP/IP)

目录一、网络分层模型二、OSI模型三、网络传输原理四、TCP/IP1、TCP/IP 原理2、TCP 三次握手/四次挥手3、Http协议和TCP/IP的区别五、HTTP原理六、HTTPS原理七、CDN原理一、网络分层模型 互联网的本质就是一系列的网络协议,最早由ISO国际组织定义为7层网络参考模型…...

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux&#…...

6、流程控制

目录一、if二、switch三、for四、break与continue五、goto与Label一、if if使用:逻辑表达式成立,就会执行{}里的内容;逻辑表达式不需要加() if 5 > 9 {fmt.Println("5>9") }if句子中允许包含1个(仅1个)分号:在分…...

Linux中最基本常见命令总结

❤❤💛💛💚💚💙💙💜💜您的认可是对我最大的帮助💜💜💙💙💚💚💛💛❤❤ 🤎&…...

Python学习-----模块2.0(常用模块之时间模块-->time)

目录 前言: time简介 导入模块 1.时间戳 2.时间元组 (1)把时间戳转换为元组形式 (2)元组转换为时间戳输出 (3)把元组转换为格式化时间 (4)把时间戳转换为格式化时间…...

XXL-JOB分布式任务调度框架(二)-策略详解

文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例6.随机选取7.轮询选取8.一致性hash9.最不经常使用 (LFU)10.最近最久未使用(LRU)11.故障转移12.忙碌转移13.分片广播任务14.父子任务15.…...

JAVA练习54-最小栈

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-最小栈 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月18日练习内容…...

Redis-哨兵模式以及集群

在开始这部分内容之前需要先说一下复制功能,因为这是Redis实现主从数据同步的实现方式。复制功能如果存在两台服务器的话,我们可以使用redis的复制功能,让一台服务器去同步另一台服务器的数据。现在我启动了两台redis服务器,一个端…...

过滤器和监听器

1、过滤器Filter 作用是防止SQL注入、参数过滤、防止页面攻击、空参数矫正、Token校验、Session验证、点击率统计等等; 使用Filter的步骤 新建类,实现Filter抽象类;重写init、doFilter、destroy方法;在SpringBoot入口中添加注解…...

Acwing 第 91 场周赛

Powered by:NEFU AB-IN B站直播录像! Link 文章目录Acwing 第 91 场周赛A AcWing 4861. 构造数列题意思路代码B AcWing 4862. 浇花题意思路代码C AcWing 4863. 构造新矩阵题意思路代码Acwing 第 91 场周赛 A AcWing 4861. 构造数列 题意 略 思路 将每个数的每一位…...

JavaEE|套接字编程之UDP数据报

文章目录一、DatagramSocket API构造方法常用方法二、DatagramPacket API构造方法常用方法E1:回显服务器的实现E2:带有业务逻辑的请求发送一、DatagramSocket API 在操作系统中,把socket对象当成了一个文件处理。等价于是文件描述符表上的一项。 普通的文件&#xf…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

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

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

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...