欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > pymysql 入门

pymysql 入门

2025/4/24 15:50:07 来源:https://blog.csdn.net/HHX_01/article/details/144533782  浏览:    关键词:pymysql 入门

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

1. 什么是 PyMySQL?

PyMySQL 是一个纯 Python 编写的 MySQL 客户端库,可以通过它轻松地在 Python 中连接并操作 MySQL 数据库。它兼容 MySQL 5.x 和 MariaDB,并且与 MySQL 官方提供的客户端接口(C API)兼容。PyMySQL 支持数据库连接、执行 SQL 查询、以及提取查询结果等功能。

1.1 为什么选择 PyMySQL?

  • 纯 Python 实现:没有 C 扩展,安装起来更加简单,兼容性更好。
  • 易用性:与 MySQL 数据库的交互非常直观。
  • 支持 Python3:在 Python3 环境中运行非常流畅。

2. 安装 PyMySQL

PyMySQL 可以通过 Python 的包管理工具 pip 进行安装。打开终端或命令提示符,输入以下命令:

pip install pymysql

安装完成后,你就可以在你的 Python 项目中使用 PyMySQL 了。


3. 连接 MySQL 数据库

要使用 PyMySQL 连接到 MySQL 数据库,你需要提供 MySQL 服务的主机地址、用户名、密码和数据库名等信息。以下是一个连接的简单示例:

import pymysql# 连接到数据库
connection = pymysql.connect(host='localhost',         # MySQL 服务器地址,localhost 表示本地user='root',              # 数据库用户名password='password123',   # 数据库密码database='test_db',       # 要连接的数据库名称charset='utf8mb4'         # 字符集(推荐使用 utf8mb4)
)# 确保连接成功
print("Connected to MySQL Database!")

3.1连接参数详解:

  • host:MySQL 服务器的地址,通常是 'localhost' 或 IP 地址。如果是远程服务器,则需要填写远程服务器的 IP。
  • user:连接 MySQL 数据库的用户名。
  • password:连接数据库的密码。
  • database:指定要操作的数据库。
  • charset:字符集,utf8mb4 是推荐的字符集,支持更多的 Unicode 字符。

4. 执行查询操作

4.1 SELECT 查询

查询数据库通常使用 SELECT 语句。下面是如何在 Python 中执行查询操作并处理返回结果的示例:

# 创建一个游标对象
cursor = connection.cursor()# 执行 SELECT 查询
cursor.execute("SELECT * FROM users")# 获取所有结果
results = cursor.fetchall()# 遍历并打印每一行数据
for row in results:print(row)# 关闭游标
cursor.close()
  • cursor.execute():执行 SQL 语句。
  • cursor.fetchall():获取查询结果的所有记录,返回一个列表,每个元素是数据库表中的一行。

如果只想获取单条记录,可以使用 fetchone() 方法:

cursor.execute("SELECT * FROM users LIMIT 1")
single_row = cursor.fetchone()
print(single_row)

4.2 INSERT 操作

插入数据时,我们使用 INSERT INTO 语句。例如:

cursor = connection.cursor()# 插入一条数据
sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
values = ('Alice', 28, 'alice@example.com')cursor.execute(sql, values)# 提交事务
connection.commit()print("Record inserted successfully!")# 关闭游标
cursor.close()
  • cursor.execute(sql, values):执行插入操作,其中 %s 是占位符,values 是一个元组或列表,包含实际的插入值。
  • connection.commit():提交事务,确保数据写入数据库。

4.3 UPDATE 操作

更新数据时,我们使用 UPDATE 语句。例如:

cursor = connection.cursor()# 更新一条数据
sql = "UPDATE users SET age = %s WHERE name = %s"
values = (30, 'Alice')cursor.execute(sql, values)# 提交事务
connection.commit()print("Record updated successfully!")# 关闭游标
cursor.close()

4.4 DELETE 操作

删除数据时,我们使用 DELETE FROM 语句。例如:

cursor = connection.cursor()# 删除一条数据
sql = "DELETE FROM users WHERE name = %s"
value = ('Alice',)cursor.execute(sql, value)# 提交事务
connection.commit()print("Record deleted successfully!")# 关闭游标
cursor.close()

5. 处理数据库事务

数据库操作可以使用事务来管理。在 PyMySQL 中,默认情况下,数据库操作是自动提交的,但我们可以通过显式地调用 commit() 来提交事务,或者使用 rollback() 来回滚事务。

try:cursor = connection.cursor()# 执行一些数据库操作cursor.execute("UPDATE users SET age = 30 WHERE name = 'Alice'")# 如果没有错误,提交事务connection.commit()except Exception as e:# 出现错误时回滚事务print(f"Error occurred: {e}")connection.rollback()finally:cursor.close()

6. 使用游标(Cursor)和提取结果

游标是用于执行 SQL 语句并获取结果的对象。在 PyMySQL 中,我们通常使用游标来执行查询和数据操作。游标提供了如下几种常用方法:

  • fetchall():返回所有查询结果。
  • fetchone():返回查询结果中的第一条记录。
  • fetchmany(size):返回查询结果中的多条记录,size 是返回的条数。

7. 如何使用连接池管理多个数据库连接

对于高并发的应用程序,管理数据库连接池是非常重要的。PyMySQL 本身不支持连接池,但你可以使用其他第三方库来实现连接池,如 DBUtilsSQLAlchemy

例如,使用 DBUtils 创建连接池:

from dbutils.pooled_db import PooledDB
import pymysql# 创建连接池
pool = PooledDB(creator=pymysql,          # 使用 pymysql 作为数据库接口maxconnections=5,         # 连接池允许的最大连接数host='localhost',user='root',password='password123',database='test_db',charset='utf8mb4'
)# 从连接池获取连接
connection = pool.connection()# 执行数据库操作
cursor = connection.cursor()
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()
print(result)# 关闭游标和连接
cursor.close()
connection.close()

8. 异常处理

在数据库操作中,捕获和处理异常非常重要。例如,尝试执行一个 SQL 语句时可能会出现数据库连接失败、SQL 错误等问题。你可以使用 try/except 来捕获这些异常。

try:connection = pymysql.connect(host='localhost',user='root',password='wrongpassword',database='test_db')
except pymysql.MySQLError as e:print(f"Error connecting to MySQL: {e}")

9. 常见问题解答

9.1. 为什么我的 PyMySQL 连接报错?

  • 确保数据库用户名、密码、数据库名、主机地址正确。
  • 检查 MySQL 服务是否已启动。
  • 确保防火墙未阻止 MySQL 连接。

9.2. 如何提高查询性能?

  • 使用索引优化查询。
  • 避免 SELECT *,只查询需要的字段。
  • 分页查询,避免一次性返回大量数据。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词