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

Python连接MySQL数据库图文教程,Python连接数据库MySQL入门教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 1. 环境准备
    • 1.1安装 Python
    • 1.2选择开发环境
    • 1.3安装 MySQL 数据库
    • 1.4 安装 pymysql 库
  • 2. 连接数据库
  • 3. 数据库基本操作
    • 3.1 创建数据库
    • 3.2 创建表
    • 3.3 插入数据
    • 3.4 查询数据
    • 3.5 更新数据
    • 3.6 删除数据
    • 4. 实际应用案例


前言

本教程旨在为广大初学者和有一定基础的开发者提供一个全面、详细且易于理解的 Python 连接 MySQL 数据库的学习指南。我们将从环境准备开始,逐步引导你完成 MySQL 数据库的安装、Python 相关库的安装,然后详细介绍如何建立数据库连接,以及如何进行数据库的基本操作,如创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等。同时,我们还会通过实际的应用案例,帮助你更好地理解和掌握 Python 与 MySQL 数据库的结合使用,让你能够将所学知识应用到实际项目中。


Python连接MySQL数据库教程
以下是一份全面的 Python 连接 MySQL 数据库教程,包含环境准备、数据库操作基础以及实际应用案例等内容。

1. 环境准备

1.1安装 Python

访问 Python 官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载并安装 Python 3.x 版本。安装时勾选 “Add Python to PATH”,方便在命令行中使用 Python。

Python 3.7安装教程:https://blog.csdn.net/u014164303/article/details/145620847
Python 3.9安装教程:https://blog.csdn.net/u014164303/article/details/145570561
Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489

1.2选择开发环境

下载 PyCharm 社区版(免费)或专业版(需付费或申请教育版)。安装完成后,打开 PyCharm,创建一个新的项目,在项目设置中选择之前创建的虚拟环境作为项目的 Python 解释器。PyCharm 功能强大,提供代码自动补全、调试等功能,适合开发大型项目。

Pycharm安装教程:https://blog.csdn.net/u014164303/article/details/145674773
PyCharm下载地址:https://pan.quark.cn/s/5756c8cf8b2a

1.3安装 MySQL 数据库

如果你还没有安装 MySQL 数据库,可以从 MySQL 官方网站 下载适合你操作系统的安装程序,然后按照安装向导进行安装。安装完成后,启动 MySQL 服务,并记住你设置的用户名和密码。

mysql 8.0安装教程:https://blog.csdn.net/u014164303/article/details/145493332

1.4 安装 pymysql 库

pymysql 是一个纯 Python 实现的 MySQL 客户端库,使用它可以方便地在 Python 中连接和操作 MySQL 数据库。在命令行中运行以下命令来安装 pymysql:

pip install pymysql

2. 连接数据库

以下是一个简单的 Python 代码示例,展示了如何连接到 MySQL 数据库:

import pymysql# 建立数据库连接
try:conn = pymysql.connect(host='localhost',  # 数据库主机地址,本地数据库一般为 'localhost'user='root',  # 数据库用户名password='your_password',  # 数据库密码,替换为你自己设置的密码database='test_db',  # 要连接的数据库名,如果不存在需要先创建charset='utf8mb4'  # 字符编码)print("数据库连接成功!")
except pymysql.Error as e:print(f"数据库连接失败:{e}")
finally:if conn:conn.close()

3. 数据库基本操作

3.1 创建数据库

如果你需要创建一个新的数据库,可以使用以下代码:

import pymysql# 建立数据库连接,这里不指定具体数据库名
conn = pymysql.connect(host='localhost',user='root',password='your_password',charset='utf8mb4'
)try:# 创建游标对象cursor = conn.cursor()# 执行创建数据库的 SQL 语句cursor.execute("CREATE DATABASE IF NOT EXISTS test_db")print("数据库创建成功!")
except pymysql.Error as e:print(f"数据库创建失败:{e}")
finally:if conn:conn.close()

3.2 创建表

在连接到指定数据库后,可以创建表来存储数据。以下是一个创建用户表的示例:

import pymysql# 建立数据库连接
conn = pymysql.connect(host='localhost',user='root',password='your_password',database='test_db',charset='utf8mb4'
)try:cursor = conn.cursor()# 定义创建表的 SQL 语句create_table_sql = """CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT)"""cursor.execute(create_table_sql)print("表创建成功!")
except pymysql.Error as e:print(f"表创建失败:{e}")
finally:if conn:conn.close()

3.3 插入数据

可以向表中插入新的数据记录,示例代码如下:

import pymysqlconn = pymysql.connect(host='localhost',user='root',password='your_password',database='test_db',charset='utf8mb4'
)try:cursor = conn.cursor()# 定义插入数据的 SQL 语句insert_sql = "INSERT INTO users (name, age) VALUES (%s, %s)"data = ('John', 25)cursor.execute(insert_sql, data)# 提交事务conn.commit()print("数据插入成功!")
except pymysql.Error as e:# 回滚事务conn.rollback()print(f"数据插入失败:{e}")
finally:if conn:conn.close()

3.4 查询数据

可以从表中查询数据,以下是一个简单的查询示例:

import pymysqlconn = pymysql.connect(host='localhost',user='root',password='your_password',database='test_db',charset='utf8mb4'
)try:cursor = conn.cursor()# 定义查询数据的 SQL 语句select_sql = "SELECT * FROM users"cursor.execute(select_sql)# 获取查询结果results = cursor.fetchall()for row in results:print(row)
except pymysql.Error as e:print(f"数据查询失败:{e}")
finally:if conn:conn.close()

3.5 更新数据

如果需要修改表中的数据记录,可以使用更新操作,示例代码如下:

import pymysqlconn = pymysql.connect(host='localhost',user='root',password='your_password',database='test_db',charset='utf8mb4'
)try:cursor = conn.cursor()# 定义更新数据的 SQL 语句update_sql = "UPDATE users SET age = %s WHERE name = %s"new_age = 26name = 'John'cursor.execute(update_sql, (new_age, name))conn.commit()print("数据更新成功!")
except pymysql.Error as e:conn.rollback()print(f"数据更新失败:{e}")
finally:if conn:conn.close()

3.6 删除数据

可以从表中删除指定的数据记录,示例代码如下:

import pymysqlconn = pymysql.connect(host='localhost',user='root',password='your_password',database='test_db',charset='utf8mb4'
)try:cursor = conn.cursor()# 定义删除数据的 SQL 语句delete_sql = "DELETE FROM users WHERE name = %s"name = 'John'cursor.execute(delete_sql, (name,))conn.commit()print("数据删除成功!")
except pymysql.Error as e:conn.rollback()print(f"数据删除失败:{e}")
finally:if conn:conn.close()

4. 实际应用案例

假设你正在开发一个简单的学生信息管理系统,需要使用 Python 连接 MySQL 数据库来存储和管理学生信息。以下是一个完整的示例代码:

import pymysql# 连接数据库
def connect_db():try:conn = pymysql.connect(host='localhost',user='root',password='your_password',database='student_management',charset='utf8mb4')return connexcept pymysql.Error as e:print(f"数据库连接失败:{e}")return None# 创建学生表
def create_table(conn):try:cursor = conn.cursor()create_table_sql = """CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT,grade VARCHAR(50))"""cursor.execute(create_table_sql)conn.commit()print("学生表创建成功!")except pymysql.Error as e:conn.rollback()print(f"学生表创建失败:{e}")# 插入学生信息
def insert_student(conn, name, age, grade):try:cursor = conn.cursor()insert_sql = "INSERT INTO students (name, age, grade) VALUES (%s, %s, %s)"cursor.execute(insert_sql, (name, age, grade))conn.commit()print("学生信息插入成功!")except pymysql.Error as e:conn.rollback()print(f"学生信息插入失败:{e}")# 查询所有学生信息
def query_all_students(conn):try:cursor = conn.cursor()select_sql = "SELECT * FROM students"cursor.execute(select_sql)results = cursor.fetchall()for row in results:print(row)except pymysql.Error as e:print(f"学生信息查询失败:{e}")# 主函数
def main():conn = connect_db()if conn:create_table(conn)insert_student(conn, 'Alice', 18, 'Grade 12')query_all_students(conn)conn.close()if __name__ == "__main__":main()

通过以上步骤和示例代码,你可以掌握如何使用 Python 连接和操作 MySQL 数据库。在实际应用中,还可以根据具体需求对代码进行扩展和优化。

相关文章:

Python连接MySQL数据库图文教程,Python连接数据库MySQL入门教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 环境准备1.1安装 Python1.2选择开发环境1.3安装 MySQL 数据库1.4 安装 pymysql 库 2. 连接数据库3. 数据库基本操作3.1 创建数据库3.2 创建表3.3 插入数据3.…...

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制):https://www.bilibili.com/video/BV1M6rdYEEog/ 备注: 1.本地离线卡密采用最安全的非对称加解密技术,设备id采用最安全多重混合加密不可逆技术生成&…...

天 锐 蓝盾终端安全管理系统:办公U盘拷贝使用管控限制

天 锐 蓝盾终端安全管理系统以终端安全为基石,深度融合安全、管理与维护三大要素,通过对桌面终端系统的精准把控,助力企业用户构筑起更为安全、稳固且可靠的网络运行环境。它实现了管理的标准化,有效破解终端安全管理难题&#xf…...

LeetCode 2595.奇偶位数:位运算

【LetMeFly】2595.奇偶位数:位运算 力扣题目链接:https://leetcode.cn/problems/number-of-even-and-odd-bits/ 给你一个 正 整数 n 。 用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。 用 odd 表示…...

一周学会Flask3 Python Web开发-response响应格式

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 在HTTP响应中,数据可以通过多种格式传输。大多数情况下,我们会使用HTML格式,这也是Flask中…...

uni-app开发app时 使用uni.chooseLocation遇到的问题

问题一:不显示 问题二:选择地址列表一直在加载中 因为 uni-app 接口文档 中已经说明,使用腾讯的话需要开启云服务,具体可看官网,这就是为什么使用时直接不显示的原因,所以我使用的高德,但又出现…...

Android Hal AIDL 简介 (一)

Android 接口定义语言 (AIDL) 是一款可供用户用来抽象化 IPC 的工具。 以在 .aidl 文件中指定的接口为例,各种构建系统都会使用 aidl 二进制文件构造 C++ 或 Java 绑定,以便跨进程使用该接口(无论其运行时环境或位数如何)。 AIDL 可以在 Android 中的任何进程之间使用:在…...

鸿蒙初学者学习手册(HarmonyOSNext_API14)_组件截图(@ohos.arkui.componentSnapshot (组件截图) )

前言: 这个模块可以截取组件的图片,无论组件是否已加载。截图只能拍到组件本身的大小区域。 如果组件或其子组件画得超出了自己的区域,超出的部分不会出现在截图中。截图不会拍到与当前组件平级的(兄弟)组件。 模块简…...

华为昇腾910b服务器部署DeepSeek翻车现场

最近到祸一台HUAWEI Kunpeng 920 5250,先看看配置。之前是部署的讯飞大模型,发现资源利用率太低了。把5台减少到3台,就出了他 硬件配置信息 基本硬件信息 按照惯例先来看看配置。一共3块盘,500G的系统盘, 2块3T固态…...

[展示]Webrtc NoiseSuppressor降噪模块嵌入式平台移植

最近在尝试把WebRtc的NoiseSuppressor模块移植到嵌入式平台,现在已经移植了,尝试了下效果,降噪效果很显著,噪声带被显著抑制了 降噪前: 降噪后:...

golang内存泄漏

golang也用了好几年了,趁着有空 整理归纳下,以后忘了好看下 一般认为 Go 10次内存泄漏,8次goroutine泄漏,1次是真正内存泄漏,还有1次是cgo导致的内存泄漏 1:环境 go1.20 win10 2:goroutine泄漏 单个Goroutine占用内存&…...

安科瑞能源物联网平台助力企业实现绿色低碳转型

安科瑞顾强 随着全球能源结构的转型和“双碳”目标的推进,能源管理正朝着智能化、数字化的方向快速发展。安科瑞电气股份有限公司推出的微电网智慧能源管理平台(EMS 3.0),正是这一趋势下的创新解决方案。该平台集成了物联网&…...

Android Http-server 本地 web 服务

时间:2025年2月16日 地点:深圳.前海湾 需求 我们都知道 webview 可加载 URI,他有自己的协议 scheme: content:// 标识数据由 Content Provider 管理file:// 本地文件 http:// 网络资源 特别的,如果你想直接…...

腾讯的webUI怎样实现deepseek外部调用 ; 腾讯云通过API怎样调用deepseek

腾讯的webUI怎样实现deepseek外部调用 目录 腾讯的webUI怎样实现deepseek外部调用腾讯云通过API怎样调用deepseekhtml方式curl方式python方式腾讯云通过API怎样调用deepseek 重点说明:不需要SK,仅仅使用ip和端口号 html方式 <!DOCTYPE html> <html lang="e…...

DeepSeek VS ChatGPT-速度、准确性和成本

撰写本文时马斯克刚刚发布了聊天机器人Grok2&#xff0c;10万张算卡体现了马斯克的财大气粗。近年来&#xff0c;人工智能模型取得了长足的发展&#xff0c;每个模型都力求在速度、准确性和成本效率方面超越其他模型。在本文中&#xff0c;我将深入研究比较中美在AI的焦点模型上…...

内外网隔离文件传输解决方案|系统与钉钉集成+等保合规,安全提升70%

一、背景与痛点 在内外网隔离的企业网络环境中&#xff0c;员工与外部协作伙伴&#xff08;如钉钉用户&#xff09;的文件传输面临以下挑战&#xff1a; 1. **安全性风险**&#xff1a;内外网直连可能导致病毒传播、数据泄露。 2. **操作繁琐**&#xff1a;传统方式需频繁切…...

Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)

Linux软件包管理器–apt Linux安装软件的方式 在Linux下安装软件的方法有以下三种&#xff1a; 下载到程序的源代码&#xff0c;自己编译出可执行程序获取deb安装包、然后使用dpkg命令安装。&#xff08;不解决依赖关系&#xff09;通过apt进行安装软件。 小知识点&#xf…...

最新版IDEA下载安装教程

一、下载IDEA 点击前往官网下载 或者去网盘下载 点击前往百度网盘下载 点击前往夸克网盘下载 进去后点击IDEA 然后点击Download 选择自己电脑对应的系统 点击下载 等待下载即可 二、安装IDEA 下载好后双击应用程序 点击下一步 选择好安装目录后点击下一步 勾选这两项后点击…...

MacOS 15.3 卸载系统内置软件

1、关闭系统完整性&#xff08;SIP&#xff09; 进入恢复模式(recovery) 如果您使用的是黑苹果或者白苹果&#xff0c;可以选择 重启按住CommandR 进入&#xff0c;如果是M系列芯片&#xff0c;长按开机键&#xff0c;进入硬盘选择界面进入。 我是MacMini M4芯片&#xff0c;关…...

发现问题 python3.6.13+django3.2.5 只能以asgi启动server 如何解决当前问题

在 Python 3.6.13 和 Django 3.2.5 的组合下&#xff0c;如果你发现只能使用 ASGI 启动 Django 服务&#xff0c;而不能使用 WSGI&#xff0c;可能的原因有几个。我们来分析一下常见的问题和解决方案。 1. 默认 ASGI 支持 从 Django 3.0 开始&#xff0c;Django 引入了对 ASG…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...