引言

Python是一门广泛应用于数据处理和开发领域的高级编程语言。而MySQL作为一种常用的关系型数据库管理系统,在Python开发中扮演着重要的角色。pymysql模块是Python中连接和操作MySQL数据库的一个强大工具。

安装pymysql模块

首先,我们需要确保已经在Python环境中安装了pymysql模块。可以通过以下命令进行安装:

1
pip install pymysql

连接MySQL数据库

在使用pymysql之前,我们需要建立与MySQL数据库的连接。可以通过以下代码来创建连接对象并连接到数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pymysql

# 创建连接
conn = pymysql.connect(
host='localhost', # 数据库主机名
port=3306, # 数据库端口号
user='root', # 数据库用户名
password='password', # 数据库密码
db='mydatabase' # 数据库名
)

# 创建游标对象
cur = conn.cursor()

# 执行SQL语句
cur.execute("SELECT * FROM users")

# 处理执行结果
data = cur.fetchall()
for row in data:
print(row)

# 关闭游标和连接
cur.close()
conn.close()

执行SQL语句

使用pymysql执行SQL语句非常简单。可以通过以下代码来执行SELECT、INSERT、UPDATE和DELETE语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', db='mydatabase')
cur = conn.cursor()

# 查询数据
cur.execute("SELECT * FROM users")
data = cur.fetchall()
print(data)

# 插入数据
cur.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)")
conn.commit()

# 更新数据
cur.execute("UPDATE users SET age = 26 WHERE name = 'Alice'")
conn.commit()

# 删除数据
cur.execute("DELETE FROM users WHERE name = 'Alice'")
conn.commit()

cur.close()
conn.close()

使用参数化查询

为了提高安全性和性能,在执行SQL查询时,我们推荐使用参数化查询。可以通过以下代码来实现参数化查询:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', db='mydatabase')
cur = conn.cursor()

# 参数化查询
name = 'Alice'
age = 25
cur.execute("SELECT * FROM users WHERE name = %s AND age = %s", (name, age))
data = cur.fetchall()
print(data)

cur.close()
conn.close()

异常处理

在数据库操作过程中,异常处理非常重要。我们可以使用try-except语句来捕获并处理可能发生的异常:

1
2
3
4
5
6
7
8
9
10
11
12
13
import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', db='mydatabase')
cur = conn.cursor()

try:
cur.execute("INSERT INTO nonexistent_table (name) VALUES ('Alice')")
conn.commit()
except pymysql.Error as e:
print(f"Error: {e}")

cur.close()
conn.close()