目录
PyMySQL 是一个纯 Python 实现的 MySQL 数据库驱动程序,它完全由 Python 编写,不需要任何外部依赖,可以在任何支持 Python 的平台上使用。PyMySQL 支持 Python 3,并且提供了一个类似于 MySQLdb 的 API,使得迁移现有的使用 MySQLdb 的代码变得相对容易。
安装 PyMySQL
在开始使用 PyMySQL 之前,你需要先安装它。可以使用 pip 来安装:
bash
深色版本
1pip install pymysql
基本使用示例
下面是一个简单的示例,展示如何使用 PyMySQL 连接到 MySQL 数据库,并执行一些基本操作。
1. 连接到数据库
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 创建游标对象
14with connection.cursor() as cursor:
15 # 执行 SQL 查询
16 sql = "SELECT * FROM your_table"
17 cursor.execute(sql)
18
19 # 获取查询结果
20 result = cursor.fetchall()
21
22 # 打印结果
23 for row in result:
24 print(row)
25
26# 关闭连接
27connection.close()
2. 插入数据
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 创建游标对象
14with connection.cursor() as cursor:
15 # 插入数据
16 sql = "INSERT INTO your_table (`column1`, `column2`) VALUES (%s, %s)"
17 cursor.execute(sql, ('value1', 'value2'))
18
19 # 提交事务
20 connection.commit()
21
22# 关闭连接
23connection.close()
3. 更新数据
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 创建游标对象
14with connection.cursor() as cursor:
15 # 更新数据
16 sql = "UPDATE your_table SET column1=%s WHERE column2=%s"
17 cursor.execute(sql, ('new_value', 'value_to_match'))
18
19 # 提交事务
20 connection.commit()
21
22# 关闭连接
23connection.close()
4. 删除数据
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 创建游标对象
14with connection.cursor() as cursor:
15 # 删除数据
16 sql = "DELETE FROM your_table WHERE column2=%s"
17 cursor.execute(sql, ('value_to_delete',))
18
19 # 提交事务
20 connection.commit()
21
22# 关闭连接
23connection.close()
进阶功能
1. 使用事务
在执行需要保证数据完整性的操作时,可以使用事务来保证数据的一致性。
python
深色版本
1import pymysql
2
3try:
4 # 创建连接
5 connection = pymysql.connect(
6 host='localhost',
7 user='your_username',
8 password='your_password',
9 database='your_database',
10 charset='utf8mb4',
11 cursorclass=pymysql.cursors.DictCursor
12 )
13
14 # 创建游标对象
15 with connection.cursor() as cursor:
16 # 开始事务
17 connection.begin()
18
19 # 执行多个SQL语句
20 sql_insert = "INSERT INTO your_table (`column1`, `column2`) VALUES (%s, %s)"
21 cursor.execute(sql_insert, ('value1', 'value2'))
22
23 sql_update = "UPDATE your_table SET column1=%s WHERE column2=%s"
24 cursor.execute(sql_update, ('new_value', 'value_to_match'))
25
26 # 提交事务
27 connection.commit()
28
29except pymysql.MySQLError as e:
30 # 如果发生错误,则回滚事务
31 connection.rollback()
32 print(f"Error: {e}")
33
34finally:
35 # 关闭连接
36 connection.close()
2. 批量插入数据
批量插入数据可以提高性能。
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 数据集
14data = [
15 ('value1', 'value2'),
16 ('value3', 'value4'),
17 ('value5', 'value6')
18]
19
20# 创建游标对象
21with connection.cursor() as cursor:
22 # 批量插入数据
23 sql = "INSERT INTO your_table (`column1`, `column2`) VALUES (%s, %s)"
24 cursor.executemany(sql, data)
25
26 # 提交事务
27 connection.commit()
28
29# 关闭连接
30connection.close()
3. 使用字典游标
字典游标可以让你以键值对的形式访问查询结果。
python
深色版本
1import pymysql
2
3# 创建连接
4connection = pymysql.connect(
5 host='localhost',
6 user='your_username',
7 password='your_password',
8 database='your_database',
9 charset='utf8mb4',
10 cursorclass=pymysql.cursors.DictCursor
11)
12
13# 创建游标对象
14with connection.cursor() as cursor:
15 # 执行 SQL 查询
16 sql = "SELECT * FROM your_table"
17 cursor.execute(sql)
18
19 # 获取查询结果
20 result = cursor.fetchall()
21
22 # 打印结果
23 for row in result:
24 print(row['column1'], row['column2'])
25
26# 关闭连接
27connection.close()
错误处理
在使用 PyMySQL 时,可能会遇到一些错误,例如连接失败、查询错误等。通常需要使用 try-except 语句来处理这些错误。
python
深色版本
1import pymysql
2
3try:
4 # 创建连接
5 connection = pymysql.connect(
6 host='localhost',
7 user='your_username',
8 password='your_password',
9 database='your_database',
10 charset='utf8mb4',
11 cursorclass=pymysql.cursors.DictCursor
12 )
13
14 # 创建游标对象
15 with connection.cursor() as cursor:
16 # 执行 SQL 查询
17 sql = "SELECT * FROM your_table"
18 cursor.execute(sql)
19
20 # 获取查询结果
21 result = cursor.fetchall()
22
23 # 打印结果
24 for row in result:
25 print(row)
26
27except pymysql.MySQLError as e:
28 print(f"Error: {e}")
29
30finally:
31 # 关闭连接
32 connection.close()
总结
PyMySQL 是一个功能强大且易于使用的 MySQL 数据库驱动程序,支持 Python 3。通过上述示例,你应该能够掌握如何使用 PyMySQL 连接到 MySQL 数据库,并执行基本的 CRUD 操作。