python操作MySQL数据库的方法分享


在Python中操作MySQL数据库,最常用的库之一是`mysql-connector-python`。以下是一个使用`mysql-connector-python`连接MySQL数据库并执行简单查询和插入操作的示例。请注意,您需要先通过pip安装`mysql-connector-python`库(如果尚未安装的话)。

首先,确保您已经安装了`mysql-connector-python`:


pip install mysql-connector-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("连接成功")
    except Error as e:
        print(f"连接失败: {e}")
    return connection

def execute_query(connection, query):
    """ 使用连接执行查询并返回结果 """
    cursor = connection.cursor()
    try:
        cursor.execute(query)
        connection.commit()
        print("查询成功")
    except Error as e:
        print(f"查询失败: {e}")
    return cursor

def main():
    host_name = "localhost"
    user_name = "your_username"  # 替换为您的MySQL用户名
    user_password = "your_password"  # 替换为您的MySQL密码
    db_name = "your_dbname"  # 替换为您的数据库名

    connection = create_connection(host_name, user_name, user_password, db_name)

    if connection.is_connected():
        db_Info = "SELECT database();"
        cursor = execute_query(connection, db_Info)
        print("当前数据库: ", cursor.fetchone())

        # 示例插入操作
        sql_insert_query = """ INSERT INTO your_table_name (column1, column2) VALUES (%s, %s) """  # 替换为您的表名和列名
        val = ("value1", "value2")  # 替换为您要插入的值
        cursor = execute_query(connection, sql_insert_query, val)  # 注意:这里的execute_query需要修改以支持参数传递

        cursor.close()
    else:
        print("无法连接到数据库")

    connection.close()

if __name__ == '__main__':
    main()

# 注意:对于插入操作,上面的execute_query函数需要修改以支持参数传递,例如使用cursor.execute(query, val)

**重要提示**:

- 替换`your_username`、`your_password`、`your_dbname`、`your_table_name`、`column1`、`column2`、`"value1"`、`"value2"`为您自己的MySQL数据库凭据和表结构。

- 对于插入操作,请注意上面的`execute_query`函数示例并没有直接支持传递参数(如`val`),因为`cursor.execute()`需要直接调用并传递SQL查询和参数。您可能需要修改`execute_query`函数以接受参数并直接在`cursor.execute()`中传递它们。

- 出于安全考虑,始终使用参数化查询来避免SQL注入攻击。

- 确保您的MySQL服务正在运行,并且您有权访问指定的数据库和表。