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

文章目录

    • 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.connectorconn = 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.connectorconn = 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.connectorconn = 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.connectorconn = 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 Errortry: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.mzph.cn/diannao/48806.shtml

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

相关文章

【时时三省】(C语言基础)函数和数组

山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 函数 跟数学里面的函数很相似 数组 一组相同类型的元素的集合 比如把5个整形1-5存起来 int arr[10]={1,2,3&#x…

转型做产品经理,考NPDP有什么好处?

机会是留给有准备的人的,如果此刻的你想要转岗但又没有方向,建议你可以考虑下产品经理这个岗位,产品经理是一个非技术型的岗位,但是懂一些技术相关的知识会更好的和技术部门沟通,能更好的从技术部门的角度理解需求的可…

浏览器打开抽奖系统html

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…

验证跨设备挂载文件系统可行性命令

1.安装服务器端nfs-server-kernel 软件 sudo apt-get install nfs-kernel-server 2.配置服务器端软件路径 sudo vim /etc/default/nfs-kernel-server sudo service nfs-kernel-server statussudo service nfs-kernel-server restartsudo service nfs-kernel-server statu…

用Python爬虫能实现什么?

Python 是进行网络爬虫开发的一个非常流行和强大的语言&#xff0c;这主要得益于其丰富的库和框架&#xff0c;比如 requests、BeautifulSoup、Scrapy 等。下面我将简要介绍 Python 爬虫的基础知识和几个关键步骤。 1. 爬虫的基本原理 网络爬虫&#xff08;Web Crawler&#…

antdesgin table 组件下载成excel

文章目录 发现宝藏一、需求二、报错 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 一、需求 原组件如下&#xff0c;需要添加下载功能 import React, { useState } from rea…

Spring Boot + Spring Cloud 入门

运行配置 java -jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.activetest --my1.age32 --debugtrue "D:\Program Files\Redis\redis-server.exe" D:\Program Files\Redis\redis.windows.conf "D:\Program Files\Redis\redis-cli.exe" &q…

Go语言 Import导入

本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示&#xff0c;首先创建test文件夹。 加法 在test文件夹中创建add文件夹&#xff…

别卷模型,卷应用:从李彦宏的AI观点谈起

2024年7月4日&#xff0c;世界人工智能大会暨人工智能全球治理高级别会议在上海世博中心隆重召开。百度创始人、董事长兼首席执行官李彦宏在产业发展主论坛上的发言&#xff0c;引起了广泛关注。他提出&#xff1a;“大家不要卷模型&#xff0c;要卷应用&#xff01;”这一观点…

《简历宝典》17 - 简历中“技术能力”,如何丰满且有层次,前端篇

这一节开始对技术能力模块做讲解&#xff0c;我们身边的这些互联网IT从业者们&#xff0c;前端开发、Java开发、软件测试又或者是其他职位的开发者们&#xff0c;技术能力这个模块是绕不过去的&#xff0c;从简历上看&#xff0c;这个模块体现了我们之前软件工作生涯中的技术功…

大厂面试-基本功

大厂面试第4季 服务可用性多少个9是什么意思遍历集合add或remove操作bughashcode冲突案例BigdecimalList去重复IDEA Debugger测试框架ThreaLocal父子线程数据同步 InheritableThreadLocal完美解决线程数据同步方案 TransmittableThreadLocal 服务可用性多少个9是什么意思 遍历集…

Tensor列表索引本质

张量列表索引本质 单列表索引 将原张量shape对应位置数字更改为索引列表的形状 data torch.randn((9, 512, 30)) index_list [0, 1, 3] print(data[:, index_list].shape)[[9, 3, 30]] # torch.Size([1, 6, 5]) index2_list torch.IntTensor([[[4, 5, 6, 7, 8],[4, 5, 6,…

【C++高阶】哈希函数底层原理探索:从算法设计到实现优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现 map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4da;1. unord…

比较 WordPress 、 Baklib 和 BetterDocs

对于希望管理其产品和服务的在线文档或知识库以支持其客户和员工的组织来说&#xff0c;市场上有太多的平台和工具。一些组织使用 WordPress 作为 Web 内容管理&#xff0c;并打算使用可用的插件。如果您是这样的组织之一&#xff0c;正在考虑使用广泛使用的 WordPress 插件之一…

(ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类

文章目录 Robust deep alignment network with remote sensing knowledge graph for zero-shot and generalized zero-shot remote sensing image scene classification相关资料摘要引言遥感知识图谱的表示学习遥感知识图谱的构建实体和关系的语义表示学习创建遥感场景类别的语…

ts踩坑!vue3中ts文件用export导出公共方法的ts类型定义

当我们有一个ts文件&#xff0c;定义并export出该function&#xff0c;其中方法里边有定义的变量&#xff0c;方法、钩子函数等多种&#xff0c;并最终return出该变量、方法。 此时 ts规则校验会让我们返回该函数类型。如下 export default function () {const chart ref();c…

Java基础-序列化、泛型、1.8新特性、其他

目录 序列化 什么是序列化&#xff1f;什么是反序列化&#xff1f; Serializable 接口有什么用&#xff1f; serialVersionUID 又有什么用&#xff1f; Java 序列化不包含静态变量吗&#xff1f; 如果有些变量不想序列化&#xff0c;怎么办&#xff1f; 说说有几种序列化…

为什么 centos 下使用 tree 命令看不见 .env 文件

CentOS 下使用 tree 命令看不到 .env 文件主要有两个可能的原因&#xff1a; 默认情况下&#xff0c;tree 命令不显示隐藏文件。在 Linux 系统中&#xff0c;以点(.)开头的文件或目录被视为隐藏文件。.env 文件就属于这种隐藏文件。 您可能没有安装 tree 命令。如果在 CentOS …

Yolo-World网络模型结构及原理分析(一)——YOLO检测器

文章目录 概要一、整体架构分析二、详细结构分析YOLO检测器1. Backbone2. Head3.各模块的过程和作用Conv卷积模块C2F模块BottleNeck模块SPPF模块Upsampling模块Concat模块 概要 尽管YOLO&#xff08;You Only Look Once&#xff09;系列的对象检测器在效率和实用性方面表现出色…

计网:物理层

写在开头&#xff1a;物理层就负责传送比特0和1&#xff0c; 本质上理解物理层就是理解传输介质哪个表示比特0和1&#xff0c;如&#xff1a;高电平表示1、低电平表示0等 物理层主要任务&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引脚数目和排列、固…