手把手教你如何使用Python连接MySQL数据

数据库编程是在应用程序中与数据库交互和管理数据的关键部分。MySQL是一种流行的关系型数据库管理系统(RDBMS),在Python中进行MySQL数据库编程相对容易。

本文介绍如何使用Python进行MySQL数据库编程,包括连接数据库、执行SQL查询、插入、更新和删除数据等操作。

文末附免费编程学习资料~

要使用Python连接MySQL数据库,最常用的库之一是mysql-connector-python。以下是一个简单的步骤说明和示例代码,展示如何使用这个库来连接MySQL数据库,并执行一些基本的数据库操作,如创建表、插入数据和查询数据。

步骤 1: 安装 mysql-connector-python

首先,你需要确保已经安装了mysql-connector-python。你可以通过pip来安装它:

pip install mysql-connector-python

步骤 2: 准备MySQL数据库

确保你有一个MySQL数据库运行着,并且有一个数据库以及相应的权限供Python程序使用。

步骤 3: 编写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("Connection to MySQL DB successful")
    except Error as e:
        print(f"The error '{e}' occurred")

    return connection

def execute_query(connection, query):
    """ 执行查询 """
    cursor = connection.cursor()
    try:
        cursor.execute(query)
        connection.commit()
        print("Query successful")
    except Error as e:
        print(f"The error '{e}' occurred")

def main():
    database = "your_database_name"
    host = "localhost"
    user = "your_username"
    password = "your_password"

    # 创建数据库连接
    conn = create_connection(host, user, password, database)

    if conn is not None:
        # 创建表
        create_table_query = """
        CREATE TABLE IF NOT EXISTS employees (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL,
            position VARCHAR(255) NOT NULL
        )
        """
        execute_query(conn, create_table_query)

        # 插入数据
        insert_query = """
        INSERT INTO employees (name, position) VALUES (%s, %s)
        """
        val = ("John Doe", "Software Engineer")
        execute_query(conn, insert_query, val)

        # 查询数据
        select_query = "SELECT * FROM employees"
        execute_query(conn, select_query)

        # 注意:由于我们使用的是mysql.connector,所以这里不能直接打印查询结果
        # 需要使用cursor来获取结果
        cursor = conn.cursor()
        cursor.execute(select_query)
        for row in cursor:
            print(row)

        # 关闭连接
        conn.close()
    else:
        print("Error! cannot create the database connection.")

if __name__ == '__main__':
    main()

注意事项

  • 在实际部署时,不要将数据库的用户名和密码硬编码在脚本中,应该使用环境变量或配置文件来管理敏感信息。
  • execute_query函数中,对于插入数据的SQL语句,你需要将参数作为元组传递给execute方法,这是为了防止SQL注入。
  • 在上面的示例中,查询结果是通过游标(cursor)获取的,并且是在查询语句执行后立即获取的。在实际应用中,你可能需要更复杂的逻辑来处理查询结果。
  • 在脚本结束时,确保关闭数据库连接以释放资源。

希望这个示例能帮助你开始使用Python连接和操作MySQL数据库。

7. 更新数据

更新数据是修改现有数据的过程。使用SQL的UPDATE语句来执行更新操作。

以下是一个示例:

# 更新"customers"表中id为1的记录
sql = "UPDATE customers SET address = %s WHERE id = %s"
values = ("456 Elm St", 1)
cursor.execute(sql, values)

# 提交更改到数据库
db.commit()

print(f"更新了 {cursor.rowcount} 条记录")



8. 删除数据

删除数据是从数据库中删除数据的过程。使用SQL的DELETE语句来执行删除操作。

以下是一个示例:

# 删除"customers"表中id为1的记录
sql = "DELETE FROM customers WHERE id = %s"
values = (1,)
cursor.execute(sql, values)

# 提交更改到数据库
db.commit()

print(f"删除了 {cursor.rowcount} 条记录")



9. 执行事务

事务是一组SQL操作,要么全部成功,要么全部失败。在某些情况下,需要使用事务来确保数据库的完整性。

以下是一个示例:

try:
    db.start_transaction()
    # 执行一系列SQL操作
    cursor.execute("INSERT INTO customers (name, address) VALUES (%s, %s)", ("Alice", "789 Oak St"))
    cursor.execute("UPDATE customers SET address = %s WHERE id = %s", ("789 Elm St", 2))
    db.commit()  # 提交事务
except:
    db.rollback()  # 事务回滚,撤销之前的操作



10. 关闭数据库连接

在完成数据库操作后,不要忘记关闭数据库连接,以释放资源。

cursor.close()  # 关闭游标
db.close()  # 关闭数据库连接



11. 示例:一个完整的MySQL数据库编程示例

下面我将提供一个更完整的MySQL数据库编程示例,使用Python的mysql-connector-python库来执行一系列数据库操作,包括连接数据库、创建表、插入数据、更新数据、查询数据和删除数据。

首先,确保你已经安装了mysql-connector-python库。如果没有安装,请通过pip安装:

pip install mysql-connector-python

接下来是Python脚本的完整示例:

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("Connection to MySQL DB successful")
    except Error as e:
        print(f"The error '{e}' occurred")
    return connection

def execute_query(connection, query, params=None):
    """ 执行查询并处理结果 """
    cursor = connection.cursor()
    try:
        if params is None:
            cursor.execute(query)
        else:
            cursor.execute(query, params)
        connection.commit()
        print("Query successful")
        return cursor
    except Error as e:
        print(f"The error '{e}' occurred")

def main():
    database = "testdb"
    host = "localhost"
    user = "your_username"
    password = "your_password"

    # 创建数据库连接
    conn = create_connection(host, user, password, database)

    if conn is not None:
        # 创建表
        create_table_query = """
        CREATE TABLE IF NOT EXISTS students (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL,
            age INT NOT NULL
        )
        """
        execute_query(conn, create_table_query)

        # 插入数据
        insert_query = """
        INSERT INTO students (name, age) VALUES (%s, %s)
        """
        val = ("Alice", 24)
        execute_query(conn, insert_query, val)

        # 更新数据
        update_query = """
        UPDATE students SET age = %s WHERE name = %s
        """
        update_val = (25, "Alice")
        execute_query(conn, update_query, update_val)

        # 查询数据
        select_query = "SELECT * FROM students"
        cursor = execute_query(conn, select_query)

        print("Students:")
        for row in cursor:
            print(row)

        # 删除数据
        delete_query = """
        DELETE FROM students WHERE name = %s
        """
        delete_val = ("Alice",)
        execute_query(conn, delete_query, delete_val)

        # 再次查询数据以验证删除
        cursor = execute_query(conn, select_query)
        print("Students after deletion:")
        for row in cursor:
            print(row)

        # 关闭连接
        conn.close()
    else:
        print("Error! cannot create the database connection.")

if __name__ == '__main__':
    main()

在这个示例中,我们创建了一个名为testdb的数据库(假设它已经存在,或者MySQL服务器配置为允许创建新数据库),并在其中创建了一个students表。我们插入了一条记录,然后更新了这条记录中的age字段,接着查询了表中的所有记录,并打印了它们。最后,我们删除了之前插入的记录,并再次查询表以验证删除操作。

请确保将your_usernameyour_password替换为你的MySQL用户名和密码,以及根据你的环境调整数据库名称(如果需要的话)。

这个示例展示了如何在Python中执行基本的CRUD(创建、读取、更新、删除)操作,这是数据库编程中最常见的任务。


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

👉[[CSDN大礼包:《python安装工具&全套学习资料》免费分享]]安全链接,放心点击

👉Python学习大礼包👈

👉Python副业兼职路线👈

在这里插入图片描述
在这里插入图片描述
完整源码和Python学习资料
扫描下方二维码无偿领取源码还有案例↓ ↓ ↓
在这里插入图片描述

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值