Python系列:教你使用PyMySQL操作MySQL数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Python系列:教你使用PyMySQL操作MySQL数据库

1. 概述

PyMySQL是一个用于Python语言连接和操作MySQL数据库的库。它提供了一种简单而强大的方式来与MySQL数据库进行交互,允许开发者执行各种数据库操作,如建立连接、执行查询、插入数据等。

2. 安装和配置

2.1安装PyMySQL

可以使用pip命令安装PyMySQL库:

pip install PyMySQL

2.2 配置数据库连接

要使用PyMySQL连接MySQL数据库,需要提供数据库的主机名、端口号、用户名、密码以及数据库名称等信息。可以将这些信息存储在一个字典中,如:

config = {
    'host': 'localhost',
    'port': 3306,
    'user': 'username', # 你的用户名
    'password': 'password', # 你的密码
    'database': 'database_name' # 你的数据库名
}

3. 建立数据库连接

3.1 创建连接对象

在PyMySQL中,游标(Cursor)是一个非常重要的概念,它用于执行查询和获取结果。游标允许逐行处理查询结果,从而可以控制从数据库检索的数据量和顺序。

3.1.1 游标的作用

执行SQL语句:游标对象用来执行SQL语句,如查询、插入、更新和删除。

获取结果:执行查询后,游标可以用来逐行或批量获取结果数据。

参数化查询:游标支持使用参数化查询,这有助于防止SQL注入攻击。

事务控制:通过游标执行的操作可以被提交或回滚,这对于维护数据的一致性非常重要。

3.1.2 创建游标对象

从数据库连接对象中创建游标对象的基本方法如下:

cursor = connection.cursor()

此外,PyMySQL允许指定游标的类型,例如,使用DictCursor,查询结果将以字典形式返回,其中列名是字典的键:

cursor = connection.cursor(pymysql.cursors.DictCursor)

这种方式使得处理结果更加直观和方便,因为可以通过列名访问数据,而不是通过列的索引位置。

3.1.3 示例

创建游标对象后,可以使用它来执行SQL命令。例如,执行一个查询并获取所有结果:

cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:
    print(row)

在这个例子中,execute方法用于执行SQL查询,fetchall方法用于获取所有行的数据。

3.2 创建游标对象

从连接对象中创建一个游标对象,用于执行SQL查询:

cursor = connection.cursor()

4. 执行SQL查询

上面介绍了,在PyMySQL中,执行SQL查询是通过游标对象(Cursor)完成的。这包括SELECT查询来获取数据,以及INSERTUPDATEDELETE查询来修改数据。接下来具体介绍如何使用PyMySQL执行这些操作。

4.1 执行SELECT查询

要执行SELECT查询,首先需要编写SQL查询语句。然后,使用游标对象的execute()方法来执行这个查询。查询结果可以通过游标提供的方法如fetchall()fetchone()来获取。

步骤:

  1. 编写查询语句:确定你需要执行的SELECT语句。
  2. 执行查询:使用游标的execute()方法执行SQL语句。
  3. 获取结果:使用fetchall()获取所有结果,或使用fetchone()获取单个结果。
query = "SELECT * FROM users"
cursor.execute(query)
results = cursor.fetchall()
for row in results:
    print(row)

在这个例子中,execute()方法执行了SQL查询,fetchall()方法获取了所有的查询结果,并且结果通过一个循环打印出来。

4.2 执行INSERTUPDATEDELETE查询

对于INSERTUPDATEDELETE操作,步骤类似于执行SELECT查询,但通常需要在执行这些操作后提交更改,以确保更改被保存到数据库中。步骤:

  1. 编写SQL语句:根据需要修改数据的类型编写相应的INSERTUPDATEDELETE语句。
  2. 执行查询:使用游标的execute()方法执行SQL语句。对于INSERTUPDATE操作,可以传递参数来避免SQL注入。
  3. 提交更改:使用连接对象的commit()方法提交更改到数据库。
query = "INSERT INTO users (name, age) VALUES (%s, %s)"
values = ('John', 25)

cursor.execute(query, values)
connection.commit()

在这个例子中,execute()方法不仅执行了INSERT查询,还通过传递参数的方式提供了要插入的数据,这有助于防止SQL注入。执行后,使用commit()方法确保更改被保存。

5. 处理查询结果

5.1 遍历查询结果

可以使用for循环遍历fetchall()返回的查询结果:

for row in results:
    print(row)


5.2 访问特定字段

可以使用索引或字段名访问查询结果中的特定字段:

name = row[0] # 使用索引

age = row['age'] # 使用字段名

6. 关闭连接

6.1 关闭游标和连接

在完成数据库操作后,需要关闭游标和连接对象以释放资源:

cursor.close()
connection.close()

6.2 使用with语句自动关闭

可以使用with语句自动管理连接和游标的关闭:

with pymysql.connect(**config) as connection:
    with connection.cursor() as cursor:
        # 执行查询操作
        pass

7. 一个连续的示例

现在假设你安装好了MySQLPython3环境,并安装了PyMySQL库。由于PyMySQL库并不会自动创建连接的数据库,需要先登录你的MySQL中手动创建一个数据库。

假设你的root用户的密码为:123456,登录你的MySQL交互环境:

mysql -h localhost -P 3306 -u root -p

在显示Enter password:输入123456(假设为你的密码),回车。其中h localhost可以依据你的MySQL主机地址修改,若为localhost,可以不指定h参数。

现在我们执行SQL创建一个名为mydatabase的数据库:

CREATE DATABASE mydatabase;

然后执行quit命令退出。

PyMySQL依赖于cryptography包的C扩展。如果在后续运行中提示缺少,可以使用下面的命令进行安装:

pip install cryptography

这里的cryptography是一个用于加密和解密的Python库,提供了多种加密算法和工具,帮助开发者实现安全通信和数据保护。它支持对称加密、非对称加密、哈希函数、数字签名等多种加密技术。

接下来编写我们的脚本:

import pymysql

# 数据库配置
config = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': '123456',
    'database': 'mydatabase'
}

# 建立数据库连接
connection = pymysql.connect(**config)

try:
    with connection.cursor() as cursor:
        # 创建表
        create_table_query = """
        CREATE TABLE IF NOT EXISTS users (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255),
            age INT
        )
        """
        cursor.execute(create_table_query)
        connection.commit()
        
        # 插入数据
        insert_query = "INSERT INTO users (name, age) VALUES (%s, %s)"
        users_data = [
            ('John', 25),
            ('Alice', 30),
            ('Bob', 35)
        ]
        cursor.executemany(insert_query, users_data)
        connection.commit()
        
        # 查询数据
        select_query = "SELECT * FROM users"
        cursor.execute(select_query)
        results = cursor.fetchall()
        print("查询结果:")
        for row in results:
            print(row)
        
        # 更新数据
        update_query = "UPDATE users SET age = %s WHERE name = %s"
        cursor.execute(update_query, (28, 'John'))
        connection.commit()
        
        # 删除数据
        delete_query = "DELETE FROM users WHERE name = %s"
        cursor.execute(delete_query, ('Bob',))
        connection.commit()
        
        # 再次查询数据
        cursor.execute(select_query)
        results = cursor.fetchall()
        print("更新后的查询结果:")
        for row in results:
            print(row)
        
finally:
    # 关闭连接
    connection.close()

这个脚本使用了PythonPyMySQL库来与MySQL数据库进行交互,具体执行了以下操作:

  1. 建立数据库连接: 使用提供的配置(包括主机名、端口号、用户名、密码和数据库名)建立到MySQL数据库的连接;
  2. 创建表: 在数据库中创建一个名为users的表,如果这个表已经存在,则不会重复创建。表中包含三个字段:id(自动增长的整数主键)、name(字符串类型,最大长度255)、age(整数类型)。
  3. 插入数据:users表中插入三条数据记录,分别是John(25岁)、Alice(30岁)和Bob(35岁)。
  4. 查询数据:从users表中查询所有记录,并打印出来。这是在插入数据后立即进行的,所以查询结果将显示所有刚插入的数据。
  5. 更新数据: 更新名为John的用户的年龄,将其从25岁改为28岁。
  6. 删除数据: 删除名为Bob的用户记录。
  7. 再次查询数据: 在更新和删除操作之后,再次从users表中查询所有记录,并打印出来。这次查询的结果将反映出对John年龄的更新和Bob记录的删除。
  8. 关闭数据库连接: 在所有操作完成后,脚本会关闭数据库连接,释放资源。

整个脚本展示了如何使用PyMySQL进行基本的数据库操作,包括连接数据库、执行SQL命令(创建表、插入、查询、更新、删除数据)以及最后关闭数据库连接。这些操作是数据库管理和数据处理中常见的任务。

运行后的控制套输出为:

查询结果:
(1, 'John', 25)
(2, 'Alice', 30)
(3, 'Bob', 35)
更新后的查询结果:
(1, 'John', 28)
(2, 'Alice', 30)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
131 68
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
87 15
|
2月前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
2月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
44 4
|
2月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接22.bijius.com
自动化数据预处理:使用Python库(如Pandas)自动清洗、转换和准备数据,为机器学习模型提供高质量输入。 实时数据处理:集成Apache Kafka或Amazon Kinesis等流处理系统,实现实时数据更新和分析。
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
124 0
|
2月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。
|
2月前
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
1. Python与SQL集成的关键步骤 在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。