CentOS环境下使用Python连接MySQL数据库的详细步骤与代码示例

在当今的数据驱动时代,数据库与编程语言的结合使用已成为许多开发者的必备技能。Python作为一种简洁、易读且功能强大的编程语言,与MySQL这一广泛使用的开源关系型数据库管理系统相结合,能够高效地处理和存储大量数据。本文将详细介绍在CentOS环境下,如何使用Python连接MySQL数据库,并提供详细的步骤和代码示例。

一、环境准备

1.1 安装CentOS操作系统

首先,确保你的服务器或虚拟机已经安装了CentOS操作系统。推荐使用CentOS 7或更高版本,以获得更好的兼容性和支持。

1.2 安装MySQL数据库

在CentOS环境下安装MySQL数据库,可以通过以下命令进行:

sudo yum install mysql-server

安装完成后,启动MySQL服务:

sudo systemctl start mysqld

为了确保MySQL服务在系统启动时自动运行,可以使用以下命令:

sudo systemctl enable mysqld

1.3 安装Python

CentOS通常自带Python环境,但为了确保版本兼容性,建议安装Python 3.x版本。可以通过以下命令安装:

sudo yum install python3

二、安装Python MySQL连接库

为了使Python能够连接到MySQL数据库,需要安装mysql-connector-python库。可以通过以下命令进行安装:

pip3 install mysql-connector-python

三、配置MySQL数据库

3.1 设置MySQL root密码

安装MySQL后,默认的root用户没有密码。为了安全起见,需要设置root密码。使用以下命令进入MySQL安全配置:

sudo mysql_secure_installation

按照提示设置root密码,并进行其他安全设置。

3.2 创建数据库和用户

登录MySQL数据库:

mysql -u root -p

在MySQL命令行中,创建一个新的数据库和一个具有相应权限的用户:

CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

四、编写Python代码连接MySQL数据库

4.1 导入必要的库

首先,在Python脚本中导入mysql.connector库:

import mysql.connector

4.2 建立连接

使用mysql.connector.connect()方法建立与MySQL数据库的连接:

def connect_to_database():
    try:
        connection = mysql.connector.connect(
            host='localhost',
            user='myuser',
            password='mypassword',
            database='mydatabase'
        )
        if connection.is_connected():
            print("成功连接到MySQL数据库")
            return connection
    except mysql.connector.Error as e:
        print(f"连接失败: {e}")
        return None

connection = connect_to_database()

4.3 执行SQL查询

通过建立的连接执行SQL查询,例如插入数据、查询数据等:

def execute_query(connection, query):
    try:
        cursor = connection.cursor()
        cursor.execute(query)
        if query.strip().upper().startswith("SELECT"):
            result = cursor.fetchall()
            for row in result:
                print(row)
        else:
            connection.commit()
            print("操作成功")
    except mysql.connector.Error as e:
        print(f"操作失败: {e}")
    finally:
        if cursor:
            cursor.close()

# 插入数据示例
insert_query = "INSERT INTO mytable (name, age) VALUES ('Alice', 25)"
execute_query(connection, insert_query)

# 查询数据示例
select_query = "SELECT * FROM mytable"
execute_query(connection, select_query)

4.4 关闭连接

在操作完成后,及时关闭数据库连接:

def close_connection(connection):
    if connection and connection.is_connected():
        connection.close()
        print("数据库连接已关闭")

close_connection(connection)

五、完整代码示例

将上述步骤整合到一个完整的Python脚本中:

import mysql.connector

def connect_to_database():
    try:
        connection = mysql.connector.connect(
            host='localhost',
            user='myuser',
            password='mypassword',
            database='mydatabase'
        )
        if connection.is_connected():
            print("成功连接到MySQL数据库")
            return connection
    except mysql.connector.Error as e:
        print(f"连接失败: {e}")
        return None

def execute_query(connection, query):
    try:
        cursor = connection.cursor()
        cursor.execute(query)
        if query.strip().upper().startswith("SELECT"):
            result = cursor.fetchall()
            for row in result:
                print(row)
        else:
            connection.commit()
            print("操作成功")
    except mysql.connector.Error as e:
        print(f"操作失败: {e}")
    finally:
        if cursor:
            cursor.close()

def close_connection(connection):
    if connection and connection.is_connected():
        connection.close()
        print("数据库连接已关闭")

if __name__ == "__main__":
    connection = connect_to_database()
    if connection:
        # 插入数据示例
        insert_query = "INSERT INTO mytable (name, age) VALUES ('Alice', 25)"
        execute_query(connection, insert_query)

        # 查询数据示例
        select_query = "SELECT * FROM mytable"
        execute_query(connection, select_query)

        close_connection(connection)

六、总结

通过本文的详细步骤和代码示例,相信你已经掌握了在CentOS环境下使用Python连接MySQL数据库的方法。这一技能在数据存储、处理和分析等方面具有广泛的应用前景。希望你在实际项目中能够灵活运用,提升开发效率。