MySQL 中 .query() 和 .execute() 的区别
MySQL 是一种非常流行的关系型数据库管理系统,用于存储和管理大量的结构化数据。在使用 MySQL 进行数据库操作时,我们常会遇到两个方法:.query() 和 .execute()。尽管它们在功能上有些相似,但实际上它们有一些明显的区别。.query() 方法.query() 方法用于执行查询语句,返回一个结果集。这个结果集可以包含零行或多行数据,通常用于从数据库中检索数据。.query() 方法接受一个 SQL 查询语句作为参数,并将结果存储在一个结果集对象中,以供后续的数据处理和使用。在使用 .query() 方法时,我们需要注意以下几点:1. 查询语句必须是一个合法的 SQL 语句,包括 SELECT、FROM、WHERE 等关键字。2. 执行 .query() 方法后,我们需要使用结果集对象的方法来获取数据,例如 fetchall()、fetchone() 等。下面是一个使用 .query() 方法查询数据的示例代码:pythonimport 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() 方法插入数据的示例代码:pythonimport 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() 方法。