问题描述

假设我们有一个学生信息表,表结构如下:

字段名 数据类型
id int
姓名 varchar
年龄 int
性别 varchar
手机号码 varchar

现在我们需要实现一个功能,根据学生姓名查询学生的信息。

解决方案

1. 创建数据库连接

在Python中,我们可以使用mysql.connector模块来连接MySQL数据库。首先需要安装该模块:

pip install mysql-connector-python

然后,我们可以通过以下代码来创建数据库连接:

import mysql.connector

# 创建数据库连接
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name')

2. 执行查询语句

接下来,我们需要执行查询语句来获取学生信息。在MySQL语句中,我们可以使用%s作为占位符来表示参数。具体的查询代码如下:

import mysql.connector

# 创建数据库连接
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name')

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

# 执行查询语句
query = "SELECT * FROM students WHERE 姓名 = %s"
name = '张三'
cursor.execute(query, (name,))

# 获取查询结果
result = cursor.fetchall()
for row in result:
    print(row)

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

在上述代码中,我们首先创建了一个游标对象cursor,然后执行了一条查询语句,其中使用%s表示参数的占位符,并通过execute()方法传入参数值。最后,通过fetchall()方法获取查询结果。

3. 关闭游标和数据库连接

在查询结束后,我们需要关闭游标和数据库连接以释放资源。具体代码如下:

import mysql.connector

# 创建数据库连接
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name')

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

# 执行查询语句
query = "SELECT * FROM students WHERE 姓名 = %s"
name = '张三'
cursor.execute(query, (name,))

# 获取查询结果
result = cursor.fetchall()
for row in result:
    print(row)

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

4. 完整代码示例

下面是一个完整的示例代码,包含了创建数据库连接、执行查询语句、关闭游标和数据库连接的步骤:

import mysql.connector

# 创建数据库连接
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name')

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

# 执行查询语句
query = "SELECT * FROM students WHERE 姓名 = %s"
name = '张三'
cursor.execute(query, (name,))

# 获取查询结果
result = cursor.fetchall()
for row in result:
    print(row)

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

序列图

下面是一个使用序列图示意查询过程的流程:

```mermaid
sequenceDiagram
    participant Python
    participant MySQL
    participant Database

    Python ->> MySQL: 创建数据库连接
    MySQL ->> Database: 连接到数据库
    Python ->> MySQL: 执行查询语句
    MySQL ->> Database: 执行查询操作
    MySQL -->> Python: 返回查询结果
    Python ->> MySQL: 关闭游标和数据库连接
    MySQL ->> Database: 关闭数据库连接