MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作

news2024/12/23 22:36:37

文章目录

  • MySQL 知识点
      • 1.1 数据库创建和选择
      • 1.2 数据表创建和修改
      • 1.3 插入数据
      • 1.4 查询数据
      • 1.5 更新和删除数据
    • 1.6 索引的创建和使用
    • 1.7 外键的使用
  • Python 中使用 MySQL
      • 2.1 连接数据库
      • 2.2 创建数据库和数据表
      • 2.3 插入数据
      • 2.4 查询数据
      • 2.5 更新和删除数据
      • 2.6 关闭连接
    • 2.7 数据库备份和恢复
  • 完结

MySQL 知识点

MySQL 知识点

1.1 数据库创建和选择

在这里插入图片描述

要在MySQL中创建数据库,可以使用CREATE DATABASE语句:

CREATE DATABASE mydatabase;

这将创建一个名为mydatabase的数据库。

要选择数据库,可以使用USE语句:

USE mydatabase;

这将使我们在后续的操作中使用mydatabase这个数据库。

1.2 数据表创建和修改

要在MySQL中创建数据表,可以使用CREATE TABLE语句:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    salary FLOAT
);

这将创建一个名为employees的数据表,其中包含idnameagesalary四个字段。

要修改数据表,可以使用ALTER TABLE语句。例如,我们可以添加一个新的email字段:

ALTER TABLE employees ADD COLUMN email VARCHAR(100);

这将在employees表中添加一个email字段,类型为VARCHAR(100)

1.3 插入数据

要将数据插入到数据表中,可以使用INSERT INTO语句:

INSERT INTO employees (name, age, salary) VALUES ('李白', 25, 5000);

这将向employees表中插入一条记录,其中包含name为’李白’、age为25、salary为5000的数据。

如果要插入多条数据,可以使用逗号将其分隔开:

INSERT INTO employees (name, age, salary) VALUES ('杜甫', 30, 6000), ('王之涣', 35, 7000);

这将向employees表中插入两条记录。

1.4 查询数据

要从数据表中查询数据,可以使用SELECT语句:

SELECT * FROM employees;

这将返回employees表中的所有记录。

您还可以使用条件、排序和限制结果的语句。例如,以下代码将返回年龄大于30岁的前5个员工,按工资降序排列:

SELECT * FROM employees WHERE age > 30 ORDER BY salary DESC LIMIT 5;

1.5 更新和删除数据

要更新数据表中的数据,可以使用UPDATE语句:

UPDATE employees SET salary = 5500 WHERE id = 1;

这将把employees表中id为1的记录的salary字段更新为5500。

要删除数据表中的数据,可以使用DELETE语句:

DELETE FROM employees WHERE id = 2;

这将删除employees表中id为2的记录。

1.6 索引的创建和使用

在MySQL中,索引是用于提高查询效率的重要机制。通过创建合适的索引,可以加快查询速度并减少数据库的负载。下面是创建索引和使用索引的示例代码:

-- 创建索引
CREATE INDEX idx_name ON employees (name);

-- 使用索引查询
SELECT * FROM employees WHERE name = '李白';

示例中,我们使用CREATE INDEX语句创建了一个名为idx_name的索引,该索引针对employees表中的name字段。然后,我们使用SELECT语句查询名字为’李白’的员工信息,由于我们创建了索引,查询速度将会更快。

1.7 外键的使用

MySQL支持外键约束,它们用于维护表与表之间的关系。通过使用外键,可以实现数据的完整性和一致性。下面是创建外键和使用外键的示例代码:

-- 创建外键
ALTER TABLE employees
ADD CONSTRAINT fk_department
FOREIGN KEY (department_id)
REFERENCES departments(id);

-- 使用外键查询
SELECT * FROM employees WHERE department_id = 1;

示例中,我们使用ALTER TABLE语句创建了一个名为fk_department的外键约束,它将employees表中的department_id字段与departments表中的id字段关联起来。然后,我们使用SELECT语句查询department_id为1的员工信息,由于我们创建了外键约束,可以确保查询结果只包含属于部门1的员工。

Python 中使用 MySQL

Python 中使用 MySQL

2.1 连接数据库

要在Python中连接MySQL数据库,需要使用pymysql库。首先,确保已经安装了该库,然后使用以下代码建立连接:

import pymysql

conn = pymysql.connect(host='localhost', user='your_username', password='your_password', database='your_database')

这里的host是MySQL服务器的地址,user是MySQL用户名,password是密码,database是要连接的数据库。

2.2 创建数据库和数据表

在Python中执行SQL语句可以用execute()方法。以下是在Python中创建数据库和数据表的示例代码:

cursor = conn.cursor()

# 创建数据库
cursor.execute("CREATE DATABASE IF NOT EXISTS mydatabase")

# 使用数据库
cursor.execute("USE mydatabase")

# 创建数据表
cursor.execute('''
    CREATE TABLE IF NOT EXISTS employees (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100),
        age INT,
        salary FLOAT
    )
''')

首先,我们创建一个游标对象cursor,它用于执行SQL语句。

然后,我们使用cursor.execute()方法执行SQL语句。这里,我们创建了一个名为mydatabase的数据库(如果不存在),然后使用它。

接下来,我们创建了一个名为employees的数据表,其中包含idnameagesalary四个字段。

2.3 插入数据

要在Python中插入数据,可以使用参数化查询,以避免SQL注入攻击。以下是插入数据的示例代码:

# 插入单条数据
sql = "INSERT INTO employees (name, age, salary) VALUES (%s, %s, %s)"
values = ('李白', 25, 5000)
cursor.execute(sql, values)

# 插入多条数据
sql = "INSERT INTO employees (name, age, salary) VALUES (%s, %s, %s)"
values = [
    ('杜甫', 30, 6000),
    ('王之涣', 35, 7000)
]
cursor.executemany(sql, values)

# 提交事务
conn.commit()

在这里,我们使用参数化查询来插入数据。参数化查询使用占位符(%s)来代替具体的值,然后通过传递一个值(或多个值的元组/列表)给execute()方法来填充这些占位符。

对于单条数据,我们将SQL语句和值传递给execute()方法。对于多条数据,我们将SQL语句和值的列表传递给executemany()方法。

然后调用commit()方法提交事务,确保数据被永久保存。

2.4 查询数据

要在Python中查询数据,可以使用execute()方法执行SELECT语句,并使用fetchall()方法获取结果集。下面是查询数据的示例代码:

# 查询数据
cursor.execute("SELECT * FROM employees")
result = cursor.fetchall()
for row in result:
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}, Salary: {row[3]}")

在这里,我们使用execute()方法执行SELECT语句。然后,我们使用fetchall()方法获取所有的结果。
之后迭代结果集,并打印每一行的数据。

2.5 更新和删除数据

要在Python中更新和删除数据,可以使用execute()方法执行UPDATEDELETE语句。以下是更新和删除数据的示例代码:

# 更新数据
sql = "UPDATE employees SET salary = %s WHERE id = %s"
values = (5500, 1)
cursor.execute(sql, values)

# 删除数据
sql = "DELETE FROM employees WHERE id = %s"
values = (2,)
cursor.execute(sql, values)

# 提交事务
conn.commit()

代码中,我们使用execute()方法执行UPDATEDELETE语句。

对于更新操作,我们使用参数化查询,并将要更新的值传递给execute()方法。

对于删除操作,我们也使用参数化查询,并将要删除的记录的ID传递给execute()方法。

最后,我们调用commit()方法提交事务,确保更新或删除操作生效。

2.6 关闭连接

如果不需要时,应该关闭与MySQL的连接:

cursor.close()
conn.close()

在这里,我们使用close()方法关闭游标和数据库连接。

这样就完成了Python与MySQL的交互过程。

2.7 数据库备份和恢复

数据库备份和恢复是保护数据安全的关键步骤。在MySQL中,我们可以使用以下命令进行数据库备份和恢复:

-- 备份数据库
mysqldump -u username -p database_name > backup.sql

-- 恢复数据库
mysql -u username -p database_name < backup.sql

示例中,我们使用mysqldump命令将名为database_name的数据库备份到名为backup.sql的文件中。然后,我们可以使用mysql命令从备份文件中恢复数据库。

注意替换username为您的MySQL用户名,database_name为要备份或恢复的数据库名。

完结

python mysql

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

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

相关文章

【算法系列之贪心算法I】leetcode376. 摆动序列

455.分发饼干 力扣题目链接 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&…

详细讲解!接口性能测试方案

目录 前言&#xff1a; 性能测试术语解释 性能测试方法及目标 性能需求分析 性能测试范围 性能测试用例与场景 性能测试工具选择 性能测试结果分析 性能测试通过标准 前言&#xff1a; 接口性能测试是指测试系统中各个接口的性能&#xff0c;包括响应时间、吞吐量、并…

现在企业都在强调的客户体验,如何从官网帮助文档入手?

在当前激烈的市场竞争中&#xff0c;企业已经逐渐意识到客户体验的重要性。客户体验是指通过产品和服务所提供的一系列互动和接触&#xff0c;客户对企业的全面感受和评价。而在客户体验中&#xff0c;官网帮助文档作为企业与客户之间互动的重要环节&#xff0c;也扮演着重要的…

性能测试之测试指标

目录 前言 系统性能指标 资源指标 中间件指标 数据库指标 前端指标 稳定性指标 批量处理指标 可扩展性指标 可靠性指标 前言 性能测试是测试一个系统在特定条件下的响应时间、并发用户数、吞吐量、内存使用率、CPU利用率、网络延迟等各项指标的过程。测试指标是根据…

Alibaba Cloud Linux 3.2104 LTS 64位 安装lnmp环境php8、mysql8

Alibaba Cloud Linux 3.2104 LTS 64位服务器安装lnmp环境全过程 以下都为阿里云购买的服务器为例 前言 购买了阿里云的服务器之后切记切记切记&#xff01; 第一步设置&#xff1a;更多> 网络和安全组> 安全组配置>入方向 第二步 设置root账户的密码&#xff08;如…

如何在矩池云复现开源对话语言模型 ChatGLM

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别下最低只需 6GB 显存&#xff09;。 Chat…

ART-Pi BT_WiFi 模块固件下载

源文件《UM5003-RT-Thread ART-Pi BT_WIFI 模块固件下载手册.md》 ART-Pi BT_WiFi 模块固件下载 ART-Pi 板卡在出厂时已经烧录过 BT_WiFi 固件&#xff0c;存储在外部 Flash。如果固件被不慎擦除&#xff0c;会导致 BT_WiFi 模组的功能无法正常使用&#xff0c;出现异常情况&…

【图像处理OpenCV(C++版)】——5.2 图像平滑之高斯平滑

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

RabbitMQ常见的应用问题

文章目录 1.消息可靠性保障2.消息的幂等性保障 1.消息可靠性保障 在实际生产环境中&#xff0c;可能会由于网络问题导致消息接收异常产生某种影响&#xff0c;基于这种情况我们需要保障消息的可靠性。 RabbitMQ中的消息可靠性也称为消息补偿&#xff0c;如下图所示&#xff0…

浅析 Jetty 中的线程优化思路

作者&#xff1a;vivo 互联网服务器团队- Wang Ke 本文介绍了 Jetty 中 ManagedSelector 和 ExecutionStrategy 的设计实现&#xff0c;通过与原生 select 调用的对比揭示了 Jetty 的线程优化思路。Jetty 设计了一个自适应的线程执行策略&#xff08;EatWhatYouKill&#xff09…

Origin如何绘制带拟合曲线的频数分布图?

文章目录 0.引言1.准备数据2.频数分布参数设置并绘图3.拟合曲线参数设置并绘图 0.引言 笔者研究的方向关于点云数据采集和建模算法&#xff0c;在对一个平面进行数据采集并建模后&#xff0c;需要实验结果进行精度分析&#xff0c;为了知道建模结果的点云集中于平面的程度&…

专场来袭,深度解读阿里云视频云的全智能进化

云智深度融合&#xff0c;视频云将幻化出怎样的新光景&#xff1f; 01 「云智新生」_ 视频云的全智能进化 新数智时代&#xff0c;云和AI在走向深度融合&#xff0c;以云计算为基石、以AI为引擎的云智深度融合&#xff0c;俨然成为行业共识。以“云智”为支撑&#xff0c;视频云…

基于JavaWeb的土特产销售购物商城的设计与实现

1.引言 随着互联网技术的不断发展&#xff0c;电子商务已成为一种重要的经济活动形式。土特产作为传统文化的代表之一&#xff0c;在旅游业中具有非常重要的地位。因此&#xff0c;将土特产销售与电子商务相结合&#xff0c;建立一个基于JavaWeb的土特产销售购物商城&#xff…

java进阶—代码演示多线程的生命周期

前言 回顾一下 到现在&#xff0c;我们已经知道了 线程的三种创建方式及其选择线程的常用方法线程的安全问题以及线程的死锁线程之间的通信&#xff08;等待唤醒&#xff09; 今天&#xff0c;我们一起来看看线程的生命周期&#xff0c;生命周期这个词在后续的javaweb 相关知…

【论文系列解读】LLM构建通用视觉(SUR-Adapter)声音模型(Tango)

通用视觉&音频模型的思考 0. 视觉(Diff)怎么和多模态结合(0) 总结(1) 关键技术(1-1) LangChain(1-2) **Versatile Diffusion**(1-3) Tango(1-4) SUR-adapter 1. SUR-Adapter(0) 总结(1) 摘要(2) 相关工作(2-1) 文图生成 & LLM(2-2) 语义理解和推理数据集(2-2-1) 数据收…

【案例教程】环境多介质逸度模型实践技术与典型案例【代码】应用

【原文链接】&#xff1a;【案例教程】环境多介质逸度模型实践技术与典型案例【代码】应用https://mp.weixin.qq.com/s/i8BpApcz1p4Ua6bytxhGwA 内容简要&#xff1a;【注&#xff1a;提供以下模型所有教程】 专题一&#xff1a;基本理论 1.逸度的定义 2.逸度模型的基本原理…

蓝牙音箱中应用的国产蓝牙芯片

蓝牙音箱指的是内置蓝牙芯片&#xff0c;以蓝牙连接取代传统线材连接的音响设备&#xff0c;通过与手机平板电脑和笔记本等蓝牙播放设备连接&#xff0c;达到方便快捷的目的。蓝牙音箱以便携音箱为主&#xff0c;外形一般较为小巧便携&#xff0c;蓝牙音箱技术也凭借其方便人的…

AI绘画中的负面词 是如何正确使用以及发挥作用

Stable Diffusion的艺术或图像生成&#xff0c;有些参数是必不可少的&#xff0c;其中之一就是负提示。本次将深入解析稳定扩散中的负提示是什么&#xff0c;如何使用这个参数来生成高质量的图像。 文章目录 negative prompt如何正确使用&#xff1f;正面词控制通过负面词控制 …

IP地址、MAC地址、互联网、WLAN、运营商、子网掩码、网络地址、网段、网关、集线器、光纤、基站

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

从2PC和容错共识算法讨论zookeeper中的Create请求 | 京东云技术团队

最近在读《数据密集型应用系统设计》&#xff0c;其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中&#xff0c;误将容错共识算法写成了2PC&#xff08;两阶段提交协议&#xff09;&#xff0c;所以准备以此文对共识算法和2PC做梳理和区分&a…