一、引言
1、MySQL数据库简介
MySQL是一个开源的关系型数据库管理系统(RDBMS),它使用了一种名为Structured Query Language(SQL)的查询语言来管理数据。MySQL因其高性能、可扩展性、易用性和稳定性而广受欢迎,成为全球最受欢迎的数据库之一。
在现代应用开发中,数据库扮演了至关重要的角色,因为它们可以高效地存储、检索、管理和更新数据。对于需要处理大量数据的项目,如网站、移动应用、数据分析等,MySQL提供了强大的支持。此外,MySQL还提供了丰富的API和工具,使得开发者能够轻松地与数据库进行交互。
2、Python对数据库操作优势
Python是一种解释型、高级编程、通用编程语言,以其简洁易读、语法清晰、功能强大而著称。在数据库操作方面,Python具有显著的优势。
首先,Python拥有丰富的数据库接口库,如mysql-connector-python、PyMySQL、SQLAlchemy等,这些库提供了与MySQL数据库交互的API,使得Python开发者能够轻松地进行数据库连接、查询、插入、更新和删除等操作。
其次,Python的语法简洁明了,易于学习和使用。这使得开发者能够快速地编写出高效、可靠的数据库操作代码。同时,Python的面向对象特性也使得开发者能够方便地组织和管理代码,提高开发效率。
此外,Python还具有强大的数据处理和分析能力。它提供了丰富的数据处理库和工具,如NumPy、Pandas等,这些库可以与数据库操作库配合使用,使得开发者能够方便地进行数据分析和数据挖掘。
二、准备工作
1、安装MySQL数据库(可选,针对没有安装MySQL的读者)
这里不再赘述,没有安装Mysql的童鞋,可参考官方文档进行安装。
2、安装Python的MySQL连接库
这里我们选择使用mysql-connector-python驱动进行mysql的链接。
mysql-connector-python是一个由MySQL官方提供的Python数据库驱动,它允许Python开发者无缝地与MySQL数据库进行交互。该库遵循DB-API 2.0规范(PEP 249),提供了全面的功能来连接、查询和管理MySQL数据库。以下是对mysql-connector-python的详细介绍:
(1)功能特点:
●连接管理:支持多种连接方式,包括TCP/IP、Unix套接字以及命名管道。
●数据类型转换:自动将Python对象(如字符串、整数和日期)转化为对应的MySQL数据类型,并将数据库返回的结果转化为Python对象,简化了数据操作。
●自动重连与事务处理:在网络中断或服务器重启时,能够自动重新建立连接,保证操作的连续性。同时,它支持事务处理,可以按需控制原子性和一致性。
●兼容性:不仅适用于标准的MySQL服务,还与MariaDB、Percona Server等兼容,拓展了它的应用范围。
●执行预编译语句:支持prepared statement,可提高性能并防止SQL注入攻击。
(2)安装:
使用pip可以轻松安装mysql-connector-python。在命令行中输入以下命令即可安装:
pip install mysql-connector-python
(3)使用示例:
以下是使用mysql-connector-python进行数据库操作的基本步骤:
●建立连接:通过mysql.connector.connect()方法建立与MySQL数据库的连接,需要指定主机名、用户名、密码和数据库名等参数。
●创建游标:使用连接对象的cursor()方法创建一个游标对象,用于执行SQL语句和获取结果。
●执行SQL语句:通过游标的execute()方法执行SQL语句,可以是查询语句(如SELECT)或非查询语句(如INSERT、UPDATE、DELETE)。
●获取结果:对于查询语句,可以使用游标的fetchone()、fetchall()或fetchmany()方法获取查询结果。
●关闭游标和连接:使用游标的close()方法和连接的close()方法关闭游标和连接,释放资源。
(4)优点:
●官方支持:由MySQL官方提供,保证了与MySQL数据库的兼容性和稳定性。
●简单易用:提供了简洁明了的API,使得开发者能够轻松地进行数据库操作。
●功能全面:支持连接管理、数据类型转换、事务处理等多种功能,满足开发者在数据库操作中的各种需求。
●安全性高:支持SSL加密连接和预编译语句,保证了数据传输的安全性和防止SQL注入攻击。
三、连接到MySQL数据库
我们先在Mysql中创建一个测试数据库和测试表,如下图:
在进行数据库操作之前,首先需要与MySQL数据库建立连接。mysql-connector-python库提供了与MySQL数据库建立连接的功能,下面将详细介绍如何使用mysql-connector-python连接到MySQL数据库。
1. 导入mysql.connector模块
要使用mysql-connector-python连接到MySQL数据库,首先需要导入mysql.connector模块。在Python脚本的开头添加以下代码:
import mysql.connector
2. 创建数据库连接
使用mysql.connector.connect()函数可以创建一个到MySQL数据库的连接。该函数接受一系列参数,用于指定连接数据库所需的信息。以下是一个示例:
cnx = mysql.connector.connect(host="localhost", # 数据库服务器地址,如果数据库在本地,则为localhostuser="root", # 数据库用户名password="1234", # 数据库密码database="test" # 要连接的数据库名
)
在这个示例中,你需要将host、user、password和database替换为你自己的数据库信息。
3. 创建游标对象
一旦建立了数据库连接,你就可以创建一个游标对象来执行SQL语句和获取结果。游标对象是通过连接对象的cursor()方法创建的:
cursor = cnx.cursor()
游标对象在后续的查询、插入、更新和删除操作中扮演着重要的角色。
4. 关闭连接与游标
完成数据库操作后,应该关闭游标和连接以释放资源。使用游标对象的close()方法和连接对象的close()方法可以关闭它们:
cursor.close()
cnx.close()
在实际应用中,为了处理可能出现的异常,通常会使用try...except...finally结构来确保资源被正确释放:
import mysql.connector try: cnx = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) cursor = cnx.cursor() # 执行SQL语句 # ... except mysql.connector.Error as err: print(f"Error: '{err}'") finally: if cnx.is_connected(): cursor.close() cnx.close() print("MySQL connection is closed")
在上面的示例中,如果发生任何异常,将捕获mysql.connector.Error并打印错误信息。最后,在finally块中,检查连接是否仍然打开,并关闭游标和连接。这样,无论是否发生异常,都能确保资源被正确释放。
效果:
四、执行SQL语句
在成功连接到MySQL数据库后,下一步就是执行SQL语句来查询、插入、更新或删除数据。mysql-connector-python库提供了游标对象(cursor)来执行这些操作。下面将详细介绍如何使用游标对象来执行SQL语句。
1. 执行查询语句
要执行查询语句(如SELECT),可以使用游标对象的execute()方法。该方法接受一个SQL语句作为参数,并执行它。查询的结果可以通过游标的fetchone()、fetchall()或fetchmany()方法获取。
以下是一个简单的示例,演示如何执行查询语句并获取结果:
import mysql.connector # 连接到数据库(此处省略连接代码) try: cursor = cnx.cursor() # 执行查询语句 query = "SELECT * FROM users" cursor.execute(query) # 获取所有结果 results = cursor.fetchall() # 处理结果(例如,打印出来) for row in results: print(row) except mysql.connector.Error as err: print(f"Error: '{err}'") finally: # 关闭游标和连接(此处省略关闭代码)
效果(我提前已在数据库插入一条name为“杰克”的数据):
在上面的示例中,users应该替换为你想要查询的实际表名。fetchall()方法会返回一个包含所有查询结果的列表,其中每个元素都是一个表示一行的元组。你可以遍历这个列表来处理每一行的数据。
2. 执行插入、更新和删除语句
对于插入(INSERT)、更新(UPDATE)和删除(DELETE)语句,也可以使用游标对象的execute()方法来执行。这些语句不需要获取结果,因此通常不需要调用fetchone()、fetchall()或fetchmany()方法。
以下是一个示例,演示如何执行插入语句:
import mysql.connector # 连接到数据库(此处省略连接代码) try: cursor = cnx.cursor() # 执行插入语句 insert_query = "INSERT INTO users (name, age, email, address) VALUES (%s, %s, %s, %s)" data = ("海丽", 22, "Haili@126.com", "湖南省长沙市") cursor.execute(insert_query, data) # 提交事务(如果需要的话) cnx.commit() except mysql.connector.Error as err: print(f"Error: '{err}'") # 如果发生错误,回滚事务(如果需要的话) if cnx.is_connected(): cnx.rollback() finally: # 关闭游标和连接(此处省略关闭代码)
在上面的示例中,users应该替换为你想要插入数据的实际表名,name、age等应该替换为表中的列名。%s是参数占位符,用于表示要插入的实际数据。data是一个包含要插入数据的元组。
执行后,我们去数据库查看,可以看到数据已经成功插入:
然后执行更新的语句:
# 更新(UPDATE)操作
update_query = "UPDATE users SET age = %s WHERE name = %s"
update_data = (18, "海丽") # 假设我们要更新name为'海丽'的记录
cursor.execute(update_query, update_data)
print("数据更新成功!") # 提交事务
cnx.commit()
执行后,我们去数据库查看,可以看到数据已经成功更新:
然后执行删除的语句:
# 删除(DELETE)操作
delete_query = "DELETE FROM your_table_name WHERE column1 = %s"
delete_data = ("value1",) # 假设我们要删除column1为'value1'的记录
cursor.execute(delete_query, delete_data)
print("数据删除成功!") # 提交事务
cnx.commit()
执行后,我们去数据库查看,可以看到数据已经成功删除:
请注意,在执行插入、更新或删除语句后,可能需要提交事务以确保更改被保存到数据库中。如果发生错误,你可能还需要回滚事务以撤销更改。在上面的示例中,我们使用了cnx.commit()来提交事务,并在捕获到异常时使用cnx.rollback()来回滚事务(如果连接仍然打开的话)。
最后,请确保在完成数据库操作后关闭游标和连接,以释放资源并断开与数据库的连接。
至此,Python链接Mysql操作的基础讲解介绍完毕,下一篇我们来介绍链接Mysql时参数化查询与防止SQL注入以及使用ORM(对象关系映射)库简化操作的内容。
转载请注明出处:https://guangzai.blog.csdn.net/article/details/139212596