Python 中调用 MySQL 数据库的学习文档
背景
在现代应用程序中,数据库是存储和管理数据的核心组件。MySQL 是一种流行的关系型数据库管理系统,广泛用于 Web 应用程序和数据分析。Python 提供了多种库来与 MySQL 数据库进行交互,最常用的包括 pymysql 和 MySQL Connector/Python。本文将介绍如何在 Python 中调用 MySQL 数据库,包括安装库、创建连接、执行查询和处理结果。
1. 安装所需库
在开始之前,您需要确保安装了与 MySQL 交互的库。以下是安装 pymysql 和 mysql-connector-python 的命令:
使用 pymysql
pip install pymysql
使用 mysql-connector-python
pip install mysql-connector-python
2. 创建数据库连接
在 Python 中,您需要创建一个与 MySQL 数据库的连接。以下是使用 pymysql 和 mysql-connector-python 创建连接的示例。
使用 pymysql
import pymysql
# 数据库连接参数
config = {
'host': 'localhost',
'user': 'dbuser',
'password': 'your_password',
'db': 'your_database',
'charset': 'utf8',
}
# 创建连接
connection = pymysql.connect(**config)
使用 mysql-connector-python
import mysql.connector
# 创建连接
connection = mysql.connector.connect(
host='localhost',
user='dbuser',
password='your_password',
database='your_database'
)
3. 执行查询
一旦建立了连接,您可以使用游标对象来执行 SQL 查询。以下是执行查询的示例。
使用 pymysql
try:
with connection.cursor() as cursor:
# 执行 SQL 查询
sql = "SELECT * FROM your_table"
cursor.execute(sql)
# 获取所有结果
results = cursor.fetchall()
for row in results:
print(row)
finally:
connection.close() # 关闭连接
使用 mysql-connector-python
try:
cursor = connection.cursor()
# 执行 SQL 查询
sql = "SELECT * FROM your_table"
cursor.execute(sql)
# 获取所有结果
results = cursor.fetchall()
for row in results:
print(row)
finally:
cursor.close() # 关闭游标
connection.close() # 关闭连接
4. 插入数据
除了查询数据,您还可以插入数据到数据库中。以下是插入数据的示例。
使用 pymysql
try:
with connection.cursor() as cursor:
# 插入数据
sql = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
cursor.execute(sql, ('value1', 'value2'))
connection.commit() # 提交事务
finally:
connection.close() # 关闭连接
使用 mysql-connector-python
try:
cursor = connection.cursor()
# 插入数据
sql = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
cursor.execute(sql, ('value1', 'value2'))
connection.commit() # 提交事务
finally:
cursor.close() # 关闭游标
connection.close() # 关闭连接
5. 处理异常
在与数据库交互时,处理异常是非常重要的。您可以使用 try...except 块来捕获和处理可能发生的错误。
示例
try:
connection = pymysql.connect(**config)
with connection.cursor() as cursor:
# 执行 SQL 查询
sql = "SELECT * FROM your_table"
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
except pymysql.MySQLError as e:
print(f"Error: {e}")
finally:
connection.close() # 确保连接被关闭