Python操作MySQL数据库CRUD实战详解

MySQL作为最流行的开源关系型数据库之一,与Python的结合在Web开发、数据分析等领域应用广泛。本文将全面介绍如何使用Python实现MySQL数据库的增删改查(CRUD)操作,包含基础连接、安全实践以及高效操作技巧。

一、环境准备与数据库连接

1.1 安装必要的库

Python操作MySQL主要使用PyMySQLmysql-connector-python库:

pip install pymysql
# 或
pip install mysql-connector-python

1.2 建立数据库连接

import pymysql

# 创建连接配置字典
db_config = {
   
   
    'host': 'localhost',
    'user': 'your_username',
    'password': 'your_password',
    'database': 'your_database',
    'charset': 'utf8mb4',
    'cursorclass': pymysql.cursors.DictCursor  # 返回字典形式的结果
}

def get_connection():
    """获取数据库连接"""
    try:
        connection = pymysql.connect(**db_config)
        print("数据库连接成功")
        return connection
    except pymysql.Error as e:
        print(f"数据库连接失败: {
     
     e}")
        return None

关键参数说明

  • charset: 推荐使用utf8mb4以支持完整的Unicode字符(如emoji)
  • cursorclass: 设置为DictCursor可使查询结果以字典形式返回

二、数据查询操作

2.1 基础查询

def query_data(connection, sql, params=None):
    """执行查询操作"""
    try:
        with connection.cursor() as cursor:
            cursor.execute(sql, params)  # 使用参数化查询防止SQL注入
            result = cursor.fetchall()   # 获取所有记录
            return result
    except pymysql.Error as e:
        print(f"查询数据失败: {
     
     e}")
        return None
    finally:
        connection.close()  # 查询完成后关闭连接

# 使用示例
conn = get_connection()
users = query_data(conn, "SELECT * FROM users WHERE age > %s", (18,))
for user in users:
    print(user['name'], user['email'])

2.2 分页查询实现

def paginate_query(connection, table, page=1, per_page=10, conditions=None):
    """分页查询"""
    offset = (page - 1) * per_page
    sql = f"SELECT * FROM {
     
     table}"
    params = []
    
    if conditions:
        where_clause = " AND ".join([f"{
     
     k}=%s" for k in conditions.keys()])
        sql += f" WHERE {
     
     where_clause}"
        params.extend(conditions.values())
    
    sql += f" LIMIT %s OFFSET %s"
    params.extend([per_page, offset])
    
    return query_data(connection, sql, params)

# 使用示例
conn = get_connection()
page1_users = paginate_query(conn, 'users', page=1, per_page=5, 
                           conditions={
   
   'status'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值