【Python】连接MySQL数据库:详细教程与示例代码

news2024/11/23 19:47:27

文章目录

    • 1. 安装必要的库
    • 2. 建立与MySQL的连接
    • 3. 执行SQL查询
    • 4. 插入数据
    • 5. 更新数据
    • 6. 删除数据
    • 7. 错误处理
    • 8. 小结

在数据驱动的开发中,连接数据库是一个至关重要的技能。Python作为一门强大的编程语言,提供了多种方式连接并操作MySQL数据库。本文将详细介绍如何在Python中连接MySQL数据库,包括所需库的安装、基本连接方法、执行查询、处理结果集以及错误处理。

1. 安装必要的库

在Python中,常用的MySQL连接库是mysql-connector-pythonPyMySQL。以下示例将使用mysql-connector-python,它是MySQL官方提供的连接器。

使用pip安装mysql-connector-python

pip install mysql-connector-python

使用pip安装mysql-connector-python库,这个库提供了与MySQL数据库通信的功能。

2. 建立与MySQL的连接

安装完库后,就可以在Python中建立与MySQL的连接了。以下是一个基本的连接示例:

import mysql.connector

# 建立连接
conn = mysql.connector.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

print("连接成功")
conn.close()
  • import mysql.connector:导入mysql.connector模块。
  • mysql.connector.connect():建立与MySQL数据库的连接,参数包括主机名、用户名、密码和数据库名。
  • conn.close():关闭数据库连接。

3. 执行SQL查询

建立连接后,就可以执行SQL查询。以下是一个查询示例:

import mysql.connector

conn = mysql.connector.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

cursor = conn.cursor()

# 执行查询
cursor.execute("SELECT * FROM yourtable")

# 获取查询结果
results = cursor.fetchall()

for row in results:
    print(row)

cursor.close()
conn.close()
  • cursor = conn.cursor():创建一个游标对象,用于执行SQL查询。
  • cursor.execute("SELECT * FROM yourtable"):执行SQL查询。
  • results = cursor.fetchall():获取所有查询结果。
  • for row in results:遍历结果集并打印每一行。
  • cursor.close():关闭游标。
  • conn.close():关闭数据库连接。

4. 插入数据

除了查询数据,还可以使用Python插入数据。以下是一个插入数据的示例:

import mysql.connector

conn = mysql.connector.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

cursor = conn.cursor()

# 插入数据
sql = "INSERT INTO yourtable (column1, column2) VALUES (%s, %s)"
val = ("value1", "value2")
cursor.execute(sql, val)

conn.commit()

print(cursor.rowcount, "记录插入成功")

cursor.close()
conn.close()
  • sql = "INSERT INTO yourtable (column1, column2) VALUES (%s, %s)":定义插入SQL语句。
  • val = ("value1", "value2"):定义插入的数据。
  • cursor.execute(sql, val):执行插入操作。
  • conn.commit():提交事务。
  • cursor.rowcount:获取插入的记录数。

5. 更新数据

更新数据与插入数据类似,只需更改SQL语句。以下是一个更新数据的示例:

import mysql.connector

conn = mysql.connector.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

cursor = conn.cursor()

# 更新数据
sql = "UPDATE yourtable SET column1 = %s WHERE column2 = %s"
val = ("newvalue", "value2")
cursor.execute(sql, val)

conn.commit()

print(cursor.rowcount, "记录更新成功")

cursor.close()
conn.close()
  • sql = "UPDATE yourtable SET column1 = %s WHERE column2 = %s":定义更新SQL语句。
  • val = ("newvalue", "value2"):定义更新的数据。
  • cursor.execute(sql, val):执行更新操作。
  • conn.commit():提交事务。
  • cursor.rowcount:获取更新的记录数。

6. 删除数据

删除数据也与插入和更新类似。以下是一个删除数据的示例:

import mysql.connector

conn = mysql.connector.connect(
    host='localhost',
    user='yourusername',
    password='yourpassword',
    database='yourdatabase'
)

cursor = conn.cursor()

# 删除数据
sql = "DELETE FROM yourtable WHERE column2 = %s"
val = ("value2",)
cursor.execute(sql, val)

conn.commit()

print(cursor.rowcount, "记录删除成功")

cursor.close()
conn.close()
  • sql = "DELETE FROM yourtable WHERE column2 = %s":定义删除SQL语句。
  • val = ("value2",):定义删除的数据条件。
  • cursor.execute(sql, val):执行删除操作。
  • conn.commit():提交事务。
  • cursor.rowcount:获取删除的记录数。

7. 错误处理

在数据库操作过程中,可能会遇到各种错误,如连接失败、SQL语法错误等。可以使用try-except语句进行错误处理。

import mysql.connector
from mysql.connector import Error

try:
    conn = mysql.connector.connect(
        host='localhost',
        user='yourusername',
        password='yourpassword',
        database='yourdatabase'
    )

    if conn.is_connected():
        print("连接成功")

except Error as e:
    print("错误:", e)

finally:
    if conn.is_connected():
        conn.close()
        print("连接已关闭")
  • try块:尝试建立数据库连接。
  • except Error as e:捕获并打印错误信息。
  • finally块:确保连接关闭。

8. 小结

本文详细介绍了如何在Python中连接并操作MySQL数据库,包括库的安装、基本连接、执行查询、插入数据、更新数据、删除数据以及错误处理。掌握这些技能将大大提高数据驱动开发的效率和可靠性。数据库操作是Python编程中的重要部分,熟练掌握这些知识将为开发工作带来巨大帮助。

推荐我的相关专栏:

  • python 错误记录
  • python 笔记
  • 数据结构

在这里插入图片描述

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

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

相关文章

nuitka 打包python程序成windows exe可执行文件

参考: https://www.zhihu.com/question/281858271/answer/2466245521 https://www.zhihu.com/question/281858271 https://zhuanlan.zhihu.com/p/689115995 https://blog.csdn.net/Pan_peter/article/details/136411229 下载: pydantic-2.6.1 pydantic-…

通讯的概念

通讯的概念 文章目录 通讯的概念1.通讯的基本概念2. 串行通讯与并行通讯2. 全双工、半双工及单工通讯3. 同步通讯与异步通讯4. 通讯速率 1.通讯的基本概念 通讯是指在嵌入式系统中实现数据交换的技术手段,它涉及到硬件与硬件、硬件与软件之间的信息传输。基本概念包…

OneForAll工具:安装指南、使用方法及常见问题解决(超全)

引言 在网络安全领域,子域名收集是信息收集过程中非常重要的一步。OneForAll 是一款功能强大的子域名收集工具,能够帮助我们高效地进行子域名收集。本文将详细介绍 OneForAll 的安装和使用方法,并解决在使用过程中可能遇到的问题。 1. OneFo…

手机找回删除的通讯录号码,2个方法,让你不再烦恼

在数字化的浪潮中,我们的手机通讯录如同一张张精心编织的社会网络图谱,每一串数字背后都蕴藏着一段故事或一个重要的联系。然而,生活总会面临小插曲,总有些时候会不慎将通讯录遗失。不用过多担心,本文将会提供一些方法…

Facebook:数字时代的社交瑰宝

在当今数字化飞速发展的时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中的领军者,不仅连接了全球数十亿的用户,更深刻地改变了人们的社交方式和生活方式。本文将探讨Facebook如何成为数字时代的社交瑰宝…

Early Convolutions Help Transformers See Better(NeurIPS 2021, Meta)

paper:Early Convolutions Help Transformers See Better 出发点 本文的出发点是解决 ViT 模型在优化性方面的问题。作者假设问题主要出现在 ViT 的早期视觉处理部分,即 "patchify" 过程,这是通过一个大的步幅和大核卷积来实现的…

Linux入门攻坚——28、php、mysql基础

httpdphp:是在httpd中启用模块,不同的工作模式,使用的模块不同 modules httpd:prefork --> libphp5.so httpd:event or worker --> libphp5-zts.so php:引入zend engine后,分为…

算法实验3:贪心算法的应用

实验内容 &#xff08;1&#xff09;活动安排问题 设有n个活动的集合E{1, 2, …, n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi&#xff0c;且si <f…

# Redis 入门到精通(五)-- redis 持久化(3)

Redis 入门到精通&#xff08;五&#xff09;-- redis 持久化&#xff08;3&#xff09; 一、redis 持久化–AOF 自动重写配置 1、AOF 自动重写方式–自动重写触发条件设置 auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percent2、AOF 自动重写方式-- 自动重…

如何在Orcale首页定位到The Java® Virtual Machine Specification页面?

目标地址&#xff1a;https://docs.oracle.com/javase/specs/jls/se8/html/index.html 1. 在Orcale首页菜单栏中选择 Resources ⇒ Java Downloads 2. 往下滑&#xff0c;找到 Online Documentation 选项&#xff0c;点进去 3. 点击 Specifications 下的 Language VM 选项 5…

USB3.0接口——(5)Host数据传输模型

USB3.0接口系列&#xff1a; USB3.0接口——&#xff08;1&#xff09;基础知识 USB3.0接口——&#xff08;2&#xff09;数据结构 USB3.0接口——&#xff08;3&#xff09;协议层&#xff08;包格式&#xff09; USB3.0接口——&#xff08;4&#xff09;生产消费者模型…

IOC、DI<5> Unity、AOP

Unity.InterceptionExtension.ICallHandler实现一个操作日志记录功能 其它跟上一次一样 <?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"unity" type"Microsoft.Practice…

【Harmony】SCU暑期实训鸿蒙开发学习日记Day1

关于ArkTS和ArkUI&#xff0c;基础语法请看&#x1f449;官方开发手册 系统学习后&#xff0c;聊聊几个点&#xff0c;面向刚学习这门语言的小白&#xff0c;用于巩固和回顾&#x1f60b; 目录 类型推断应用 函数相关 布局方式 线性布局 堆叠布局 网格布局 弹性布局 …

C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器

在这篇文章中&#xff0c;我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器&#xff0c;以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能&#xff0c;并根据常用的两种文本传输协议&#…

jmeter之变量随机参数化以及解决多线程不会随机变化

参考链接&#xff1a; https://www.cnblogs.com/Testing1105/p/12743475.html jmeter 使用random函数多线程运行时数据不会随机变化&#xff1f;_jmeter 线程组循环执行时 变量不变-CSDN博客 1、如下图所示&#xff0c;需要对请求参数 autor 和phone进行随机参数化 2、目前有…

2024大模型十大趋势

2024大模型十大趋势 关键要点一、机器外脑时代的智慧探索二、机器外脑、创意生成和情感陪伴三、大模型驱动的新未来&#xff1a;AI带来创意转化与机遇四、人物-行为-场景一体化&#xff1a;未来人工智能的新范式五、未来数字内容生产的基础设施六、共创、共建、共享智能美好未来…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

删除windows系统里磁盘的恢复分区

说下我的情况 我买了块固态磁盘&#xff0c;插上主板&#xff0c;发现它自带了系统&#xff0c;这样我开机就会转到这块磁盘&#xff0c;即使在boot里改变也不行&#xff0c;后面我格式化了对应的盘符&#xff0c;但在磁盘管理里&#xff0c;发现有个EFI系统分区和恢复分区存在…

初识并发编程

并发编程的目的是 为 了 让 程序运行得更快&#xff0c;但是&#xff0c;并不是启 动 更多的 线 程就能 让 程序最大限度地并发执 行。在 进 行并 发编 程 时 &#xff0c;如果希望通 过 多 线 程 执 行任 务让 程序运行得更快&#xff0c;会面临 非常多的挑 战 &#xff0c;比…

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…