一、前置准备
-
安装必要库 :Python 操作 MySQL 最常用且推荐的库是
mysql-connector-python(官方维护),也可以用pymysql,这里以官方库为例。
打开终端执行安装命令:bashpip install mysql-connector-python -
确认 MySQL 环境:确保你的电脑已安装 MySQL 服务,且知道连接信息(主机地址、端口、用户名、密码、数据库名)。
二、核心操作代码示例
1. 基础连接(最核心步骤)
python
import mysql.connector
from mysql.connector import Error
def connect_mysql():
"""连接 MySQL 数据库"""
connection = None
try:
# 配置连接参数
connection = mysql.connector.connect(
host='localhost', # 数据库主机地址,本地填localhost
port=3306, # MySQL默认端口,若修改过需对应调整
user='root', # 你的MySQL用户名
password='123456', # 你的MySQL密码
database='test_db' # 要连接的数据库名(需提前创建)
)
if connection.is_connected():
db_info = connection.get_server_info()
print(f"成功连接MySQL服务器,版本:{db_info}")
# 获取游标(用于执行SQL语句)
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print(f"当前连接的数据库:{record}")
except Error as e:
print(f"连接失败:{e}")
finally:
# 关闭连接(重要,避免资源占用)
if connection and connection.is_connected():
cursor.close()
connection.close()
print("MySQL连接已关闭")
# 调用函数测试连接
connect_mysql()
2. 执行查询操作(读取数据)
python
def query_data():
"""查询数据库中的数据"""
try:
connection = mysql.connector.connect(
host='localhost',
user='root',
password='123456',
database='test_db'
)
cursor = connection.cursor()
# 执行查询SQL(示例:查询user表所有数据)
query = "SELECT id, name, age FROM user"
cursor.execute(query)
# 获取所有查询结果
records = cursor.fetchall()
print(f"查询到 {cursor.rowcount} 条数据:")
for row in records:
print(f"ID: {row[0]}, 姓名: {row[1]}, 年龄: {row[2]}")
except Error as e:
print(f"查询失败:{e}")
finally:
if connection and connection.is_connected():
cursor.close()
connection.close()
# query_data() # 取消注释测试
3. 执行插入操作(写入数据)
python
def insert_data(name, age):
"""插入数据到数据库"""
try:
connection = mysql.connector.connect(
host='localhost',
user='root',
password='123456',
database='test_db'
)
cursor = connection.cursor()
# 插入SQL(使用占位符%s防止SQL注入)
insert_query = "INSERT INTO user (name, age) VALUES (%s, %s)"
# 要插入的数据
data = (name, age)
cursor.execute(insert_query, data)
# 提交事务(插入/更新/删除必须提交,否则数据不生效)
connection.commit()
print(f"成功插入 {cursor.rowcount} 条数据")
except Error as e:
print(f"插入失败:{e}")
# 出错时回滚事务
connection.rollback()
finally:
if connection and connection.is_connected():
cursor.close()
connection.close()
# insert_data("张三", 25) # 取消注释测试