问题描述
假设我们有一个学生信息表,表结构如下:
字段名 | 数据类型 |
---|---|
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: 关闭数据库连接