MySQL 中 .query() 和 .execute() 之间的区别

作者:编程家 分类: 编程代码 时间:2025-07-17

MySQL 中 .query() 和 .execute() 的区别

MySQL 是一种非常流行的关系型数据库管理系统,用于存储和管理大量的结构化数据。在使用 MySQL 进行数据库操作时,我们常会遇到两个方法:.query() 和 .execute()。尽管它们在功能上有些相似,但实际上它们有一些明显的区别。

.query() 方法

.query() 方法用于执行查询语句,返回一个结果集。这个结果集可以包含零行或多行数据,通常用于从数据库中检索数据。.query() 方法接受一个 SQL 查询语句作为参数,并将结果存储在一个结果集对象中,以供后续的数据处理和使用。

在使用 .query() 方法时,我们需要注意以下几点:

1. 查询语句必须是一个合法的 SQL 语句,包括 SELECT、FROM、WHERE 等关键字。

2. 执行 .query() 方法后,我们需要使用结果集对象的方法来获取数据,例如 fetchall()、fetchone() 等。

下面是一个使用 .query() 方法查询数据的示例代码:

python

import mysql.connector

# 连接到数据库

mydb = mysql.connector.connect(

host="localhost",

user="yourusername",

password="yourpassword",

database="mydatabase"

)

# 创建游标对象

mycursor = mydb.cursor()

# 执行查询语句

mycursor.execute("SELECT * FROM customers")

# 获取结果集中的所有行

result = mycursor.fetchall()

# 打印结果

for row in result:

print(row)

.execute() 方法

.execute() 方法用于执行非查询语句,例如插入、更新和删除等操作。与 .query() 方法不同,.execute() 方法不返回任何结果集,而是返回受影响的行数。这通常用于执行对数据库进行更改的操作。

在使用 .execute() 方法时,我们需要注意以下几点:

1. 非查询语句必须是一个合法的 SQL 语句,例如 INSERT、UPDATE、DELETE 等。

2. 执行 .execute() 方法后,我们可以使用 .commit() 方法将更改保存到数据库中。

下面是一个使用 .execute() 方法插入数据的示例代码:

python

import mysql.connector

# 连接到数据库

mydb = mysql.connector.connect(

host="localhost",

user="yourusername",

password="yourpassword",

database="mydatabase"

)

# 创建游标对象

mycursor = mydb.cursor()

# 执行插入语句

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

val = ("John", "Highway 21")

mycursor.execute(sql, val)

# 将更改保存到数据库

mydb.commit()

# 输出受影响的行数

print(mycursor.rowcount, "record inserted.")

在使用 MySQL 进行数据库操作时,我们可以使用 .query() 方法执行查询语句并获取结果集,也可以使用 .execute() 方法执行非查询语句并返回受影响的行数。两者的主要区别在于返回结果的类型不同。因此,在选择使用哪个方法时,需要根据具体的需求来决定。如果需要从数据库中检索数据,则应使用 .query() 方法;如果需要对数据库进行更改,则应使用 .execute() 方法。