高效连接MySQL数据库的Python模块——pymysql

MySQL是当前使用最为广泛的开源关系型数据库管理系统,而Python是一种非常流行的编程语言。因此,许多开发者需要使用Python连接MySQL数据库进行数据处理、数据挖掘等操作。pymysql模块是Python3.x版本提供的连接MySQL数据库的模块,它提供了简单、高效、稳定的连接方式。

一、安装pymysql模块

在使用pymysql之前,需要先安装它。使用pip命令可以方便地安装pymysql:

pip install pymysql

安装好之后就可以在Python中使用pymysql了。需要提醒的是,pymysql只支持Python3.x版本,不支持Python2.x版本。

二、创建数据库连接

使用pymysql连接MySQL的第一步就是创建数据库连接。需要提供MySQL的主机地址、端口号、用户名、密码等信息,代码如下:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 关闭数据库连接
db.close()

其中,host参数表示主机地址,port参数表示端口号,user参数表示用户名,password参数表示密码,db参数表示数据库名称,charset参数表示字符集。

三、执行SQL语句

连接上数据库之后,就可以执行SQL语句进行数据操作了。pymysql提供了executemany()、execute()、select()等方法执行SQL语句。

四、executemany()方法

executemany()方法可以执行一次提交多个SQL语句,它接收两个参数,第一个参数是SQL语句的模板,第二个参数是一个元组或者列表,包含了多个SQL语句的参数,代码如下:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 定义要执行的 SQL 语句
sql = "INSERT INTO STUDENTS(name, age, gender) VALUES (%s, %s, %s)"

# 定义要插入的数据列表
data = [('tom', 20, 'male'), ('jerry', 18, 'female'), ('john', 22, 'male')]

try:
    # 执行 SQL 语句
    cursor.executemany(sql, data)

    # 提交到数据库执行
    db.commit()
    
    print('数据插入成功')
except:
    # 如果发生错误则回滚
    db.rollback()
    
    print('数据插入失败')

# 关闭游标和数据库连接
cursor.close()
db.close()

在上面的代码中,首先创建了一个包含三个元组的列表,每个元组表示一个学生的姓名、年龄、性别。然后,执行executemany()方法插入了三条学生记录。如果执行成功,则输出“数据插入成功”,否则输出“数据插入失败”,同时会回滚之前的操作,不对数据库进行任何修改。

五、execute()方法

execute()方法用于执行单个SQL语句,它接收一个参数,即要执行的SQL语句。代码如下:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 定义要执行的 SQL 语句
sql = "SELECT * FROM STUDENTS"

try:
    # 执行 SQL 语句
    cursor.execute(sql)

    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        print(row)
except:
    print('无法获取数据')

# 关闭游标和数据库连接
cursor.close()
db.close()

在上面的代码中,首先通过execute()方法执行了一条查询语句,然后使用fetchall()方法获取所有记录的结果集,并输出每一条记录的信息。

六、调用存储过程

在MySQL中,存储过程是一组预编译的SQL语句,可以接收输入参数并返回多个输出参数。当需要在Python中调用MySQL中的存储过程时,可以使用pymysql模块提供的callproc()方法。代码如下:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 调用存储过程
sql = "CALL test_proc(%s, %s, @sum)"
data = (10, 20)
cursor.callproc(sql, data)

# 获取输出参数
cursor.execute("SELECT @sum")
result = cursor.fetchone()
print(result[0])

# 关闭游标和数据库连接
cursor.close()
db.close()

在上面的代码中,调用了一个名为test_proc的存储过程,该存储过程接受两个输入参数,分别是10和20。存储过程中计算了两个参数的和,并将结果存储在变量@sum中。在调用完存储过程后,执行了一条SELECT语句获取@sum的值,并输出了该值。

七、异常处理

在使用pymysql时,由于网络问题、MySQL服务器问题等原因,可能会出现一些异常。因此,建议在代码中加入异常处理机制,保证程序的健壮性。下面是一个简单的异常处理示例:

import pymysql

try:
    # 打开数据库连接
    db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()

    # 定义要执行的 SQL 语句
    sql = "SELECT * FROM STUDENTS"

    # 执行 SQL 语句
    cursor.execute(sql)

    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        print(row)

    # 关闭游标和数据库连接
    cursor.close()
    db.close()
except Exception as e:
    print("发生异常:", e)

在上面的代码中,使用try…except结构来捕捉异常。如果在try块中执行出现异常,就会跳转到except块中执行相应的语句。

总结

pymysql是Python中连接MySQL数据库的一个重要模块,它提供了简单、高效、稳定的连接方式。本文介绍了pymysql模块的基本使用方法,包括安装模块、创建数据库连接、执行SQL语句、调用存储过程和异常处理等。在实际开发过程中,需要根据具体的需求进行使用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/156872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 01:58
下一篇 2024-11-18 01:58

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 光模块异常,SFP未认证(entityphysicalindex=6743835)——解决方案和

    如果您遇到类似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的问题,那么…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • Python模块下载与安装指南

    如果想要扩展Python的功能,可以使用Python模块来实现。但是,在使用之前,需要先下载并安装对应的模块。本文将从以下多个方面对Python模块下载与安装进行详细的阐述,包括使…

    编程 2025-04-29
  • Python编程三剑客——模块、包、库

    本文主要介绍Python编程三剑客:模块、包、库的概念、特点、用法,以及在实际编程中的实际应用,旨在帮助读者更好地理解和应用Python编程。 一、模块 1、概念:Python模块…

    编程 2025-04-29
  • 如何使用pip安装模块

    pip作为Python默认的包管理系统,是安装和管理Python包的一种方式,它可以轻松快捷地安装、卸载和管理Python的扩展库、模块等。下面从几个方面详细介绍pip的使用方法。…

    编程 2025-04-28
  • Python如何下载第三方模块

    想要使Python更加强大且具备跨平台性,我们可以下载许多第三方模块。下面将从几个方面详细介绍如何下载第三方模块。 一、使用pip下载第三方模块 pip是Python的软件包管理器…

    编程 2025-04-28
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28

发表回复

登录后才能评论