数据库编程是在应用程序中与数据库交互和管理数据的关键部分。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 Error
def create_connection(host_name, user_name, user_password, db_name):
""" 创建数据库连接 """
connection = None
try:
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 connection
def 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 Error
def create_connection(host_name, user_name, user_password, db_name):
""" 创建数据库连接 """
connection = None
try:
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 connection
def 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 cursor
except 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学习资料
扫描下方二维码无偿领取源码还有案例↓ ↓ ↓