数据库编程是在应用程序中与数据库交互和管理数据的关键部分。MySQL是一种流行的关系型数据库管理系统(RDBMS),在Python中进行MySQL数据库编程相对容易。
本文介绍如何使用Python进行MySQL数据库编程,包括连接数据库、执行SQL查询、插入、更新和删除数据等操作。
文末附免费编程学习资料~
要使用Python连接MySQL数据库,最常用的库之一是mysql-connector-python
。以下是一个简单的步骤说明和示例代码,展示如何使用这个库来连接MySQL数据库,并执行一些基本的数据库操作,如创建表、插入数据和查询数据。
步骤 1: 安装 mysql-connector-python
首先,你需要确保已经安装了mysql-connector-python
。你可以通过pip来安装它:
pip install mysql-connector-python
步骤 2: 准备MySQL数据库
确保你有一个MySQL数据库运行着,并且有一个数据库以及相应的权限供Python程序使用。
步骤 3: 编写Python代码
以下是一个简单的Python脚本,展示如何连接到MySQL数据库,创建一个表,插入数据,并查询数据。
import mysql.connector
from mysql.connector import Errordef create_connection(host_name, user_name, user_password, db_name):""" 创建数据库连接 """connection = Nonetry:connection = mysql.connector.connect(host=host_name,user=user_name,passwd=user_password,database=db_name)print("Connection to MySQL DB successful")except Error as e:print(f"The error '{e}' occurred")return connectiondef execute_query(connection, query):""" 执行查询 """cursor = connection.cursor()try:cursor.execute(query)connection.commit()print("Query successful")except Error as e:print(f"The error '{e}' occurred")def main():database = "your_database_name"host = "localhost"user = "your_username"password = "your_password"# 创建数据库连接conn = create_connection(host, user, password, database)if conn is not None:# 创建表create_table_query = """CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,position VARCHAR(255) NOT NULL)"""execute_query(conn, create_table_query)# 插入数据insert_query = """INSERT INTO employees (name, position) VALUES (%s, %s)"""val = ("John Doe", "Software Engineer")execute_query(conn, insert_query, val)# 查询数据select_query = "SELECT * FROM employees"execute_query(conn, select_query)# 注意:由于我们使用的是mysql.connector,所以这里不能直接打印查询结果# 需要使用cursor来获取结果cursor = conn.cursor()cursor.execute(select_query)for row in cursor:print(row)# 关闭连接conn.close()else:print("Error! cannot create the database connection.")if __name__ == '__main__':main()
注意事项
- 在实际部署时,不要将数据库的用户名和密码硬编码在脚本中,应该使用环境变量或配置文件来管理敏感信息。
- 在
execute_query
函数中,对于插入数据的SQL语句,你需要将参数作为元组传递给execute
方法,这是为了防止SQL注入。 - 在上面的示例中,查询结果是通过游标(cursor)获取的,并且是在查询语句执行后立即获取的。在实际应用中,你可能需要更复杂的逻辑来处理查询结果。
- 在脚本结束时,确保关闭数据库连接以释放资源。
希望这个示例能帮助你开始使用Python连接和操作MySQL数据库。
7. 更新数据
更新数据是修改现有数据的过程。使用SQL的UPDATE
语句来执行更新操作。
以下是一个示例:
# 更新"customers"表中id为1的记录
sql = "UPDATE customers SET address = %s WHERE id = %s"
values = ("456 Elm St", 1)
cursor.execute(sql, values)# 提交更改到数据库
db.commit()print(f"更新了 {cursor.rowcount} 条记录")
8. 删除数据
删除数据是从数据库中删除数据的过程。使用SQL的DELETE
语句来执行删除操作。
以下是一个示例:
# 删除"customers"表中id为1的记录
sql = "DELETE FROM customers WHERE id = %s"
values = (1,)
cursor.execute(sql, values)# 提交更改到数据库
db.commit()print(f"删除了 {cursor.rowcount} 条记录")
9. 执行事务
事务是一组SQL操作,要么全部成功,要么全部失败。在某些情况下,需要使用事务来确保数据库的完整性。
以下是一个示例:
try:db.start_transaction()# 执行一系列SQL操作cursor.execute("INSERT INTO customers (name, address) VALUES (%s, %s)", ("Alice", "789 Oak St"))cursor.execute("UPDATE customers SET address = %s WHERE id = %s", ("789 Elm St", 2))db.commit() # 提交事务
except:db.rollback() # 事务回滚,撤销之前的操作
10. 关闭数据库连接
在完成数据库操作后,不要忘记关闭数据库连接,以释放资源。
cursor.close() # 关闭游标
db.close() # 关闭数据库连接
11. 示例:一个完整的MySQL数据库编程示例
下面我将提供一个更完整的MySQL数据库编程示例,使用Python的mysql-connector-python
库来执行一系列数据库操作,包括连接数据库、创建表、插入数据、更新数据、查询数据和删除数据。
首先,确保你已经安装了mysql-connector-python
库。如果没有安装,请通过pip安装:
pip install mysql-connector-python
接下来是Python脚本的完整示例:
import mysql.connector
from mysql.connector import Errordef create_connection(host_name, user_name, user_password, db_name):""" 创建数据库连接 """connection = Nonetry:connection = mysql.connector.connect(host=host_name,user=user_name,passwd=user_password,database=db_name)print("Connection to MySQL DB successful")except Error as e:print(f"The error '{e}' occurred")return connectiondef execute_query(connection, query, params=None):""" 执行查询并处理结果 """cursor = connection.cursor()try:if params is None:cursor.execute(query)else:cursor.execute(query, params)connection.commit()print("Query successful")return cursorexcept Error as e:print(f"The error '{e}' occurred")def main():database = "testdb"host = "localhost"user = "your_username"password = "your_password"# 创建数据库连接conn = create_connection(host, user, password, database)if conn is not None:# 创建表create_table_query = """CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT NOT NULL)"""execute_query(conn, create_table_query)# 插入数据insert_query = """INSERT INTO students (name, age) VALUES (%s, %s)"""val = ("Alice", 24)execute_query(conn, insert_query, val)# 更新数据update_query = """UPDATE students SET age = %s WHERE name = %s"""update_val = (25, "Alice")execute_query(conn, update_query, update_val)# 查询数据select_query = "SELECT * FROM students"cursor = execute_query(conn, select_query)print("Students:")for row in cursor:print(row)# 删除数据delete_query = """DELETE FROM students WHERE name = %s"""delete_val = ("Alice",)execute_query(conn, delete_query, delete_val)# 再次查询数据以验证删除cursor = execute_query(conn, select_query)print("Students after deletion:")for row in cursor:print(row)# 关闭连接conn.close()else:print("Error! cannot create the database connection.")if __name__ == '__main__':main()
在这个示例中,我们创建了一个名为testdb
的数据库(假设它已经存在,或者MySQL服务器配置为允许创建新数据库),并在其中创建了一个students
表。我们插入了一条记录,然后更新了这条记录中的age
字段,接着查询了表中的所有记录,并打印了它们。最后,我们删除了之前插入的记录,并再次查询表以验证删除操作。
请确保将your_username
和your_password
替换为你的MySQL用户名和密码,以及根据你的环境调整数据库名称(如果需要的话)。
这个示例展示了如何在Python中执行基本的CRUD(创建、读取、更新、删除)操作,这是数据库编程中最常见的任务。
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!
👉[[CSDN大礼包:《python安装工具&全套学习资料》免费分享]](安全链接,放心点击)
👉Python学习大礼包👈
👉Python副业兼职路线👈
完整源码和Python学习资料
扫描下方二维码无偿领取源码还有案例↓ ↓ ↓