Python批量写入MySQL

MySQL是一个开源的关系型数据库管理系统,而Python是一种简单易学的编程语言。将Python与MySQL结合使用,可以实现批量写入数据到MySQL数据库的功能。本文将介绍如何使用Python批量写入MySQL,并提供代码示例。

准备工作

在开始之前,需要确保已经安装Python和MySQL,并通过pip安装了PyMySQL库。可以使用以下命令安装PyMySQL库:

pip install PyMySQL

连接MySQL数据库

在开始写入数据之前,首先需要连接到MySQL数据库。可以使用PyMySQL库提供的connect()函数来建立与MySQL的连接。以下是一个连接到MySQL数据库的示例代码:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', user='root', password='password', database='test')

# 创建一个游标对象
cursor = db.cursor()

在代码示例中,我们使用了localhost作为主机名,root作为用户名,password作为密码,并连接到名为test的数据库。根据实际情况,可以修改这些参数。

创建数据表

在将数据写入MySQL之前,需要先创建一个数据表。可以使用CREATE TABLE语句来创建数据表。以下是一个创建数据表的示例代码:

# 创建数据表
sql = '''
CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    score FLOAT
)
'''
cursor.execute(sql)

在代码示例中,我们创建了一个名为students的数据表,该表包含id、name、age和score四个列。id列是主键,并设置为自动增长。根据需求,可以修改表的结构。

批量写入数据

创建完数据表后,就可以开始批量写入数据了。可以使用INSERT INTO语句来向数据表中插入数据。以下是一个批量写入数据的示例代码:

# 批量写入数据
data = [
    ('Alice', 18, 90.5),
    ('Bob', 19, 85.0),
    ('Cathy', 20, 92.5),
    ('David', 21, 88.0)
]
sql = 'INSERT INTO students (name, age, score) VALUES (%s, %s, %s)'
cursor.executemany(sql, data)

# 提交到数据库执行
db.commit()

在代码示例中,我们使用了executemany()函数来批量插入数据。data是一个包含多个元组的列表,每个元组表示一条数据记录。根据实际需求,可以修改data的内容。

关闭数据库连接

当完成数据写入后,应该关闭数据库连接,释放资源。可以使用close()方法来关闭数据库连接。以下是一个关闭数据库连接的示例代码:

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

完整代码示例

将上述代码片段整合在一起,得到完整的代码示例:

import pymysql

# 打开数据库连接
db = pymysql.connect(host='localhost', user='root', password='password', database='test')

# 创建一个游标对象
cursor = db.cursor()

# 创建数据表
sql = '''
CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    score FLOAT
)
'''
cursor.execute(sql)

# 批量写入数据
data = [
    ('Alice', 18, 90.5),
    ('Bob', 19, 85.0),
    ('Cathy', 20, 92.5),
    ('David', 21, 88.0)
]
sql = 'INSERT INTO students (name, age, score) VALUES (%s, %s, %s)'
cursor.executemany(sql, data)

# 提交到数据库执行
db.commit()

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

类图

以下是使用mermaid语法标识的类图,表示本文中涉及的类之间的关系:

classDiagram
    class PyMySQL {
        +connect()
        +escape_string()
        +escape_sequence()
        +connect()
        +Writer()
        +read_packet()
        +write_packet()
        +send_command()
        +_send_data()
    }

    class pymysql.cursors.BaseCursor {
        +execute()
        +executemany()
        +fetchone()
        +fetchall()
    }

    class pymysql.connections.Connection {
        +cursor()
        +commit()
        +close()
    }

    PyMySQL <-- pymysql.cursors