MySQL Python+MySQL – Bulk Insert

MySQL Python+MySQL – Bulk Insert

在开发中,有时用户需要一次向数据库中插入多条记录,避免了反复连接数据库和操作数据库的开销。这时就需要使用MySQL的批量插入方式。

阅读更多:MySQL 教程

批量插入方式

在MySQL中,有两种批量插入方式:

  • 使用多条INSERT语句,一条语句对应一条记录;
  • 使用INSERT INTO … VALUES (value1, value2), (value1, value2), (value1, value2)…语句,一条语句对应多条记录。

使用前者需要反复连接和关闭数据库,效率低;使用后者,只需要连接一次数据库,可以一次插入多条数据,效率高。

Python使用MySQL批量插入

Python中,批量插入需要用到pymysql库,该库是基于Python3,可以通过pip install pymysql安装。

示例代码如下:

import pymysql


def bulk_insert():
    conn = pymysql.connect(
        host='localhost',
        port=3306,
        user='root',
        password='root',
        database='test_db',
        charset='utf8'
    )
    cursor = conn.cursor()

    values = [
        ('Tom', 20),
        ('Jerry', 21),
        ('Ricky', 22)
    ]

    try:
        sql = 'INSERT INTO student (name, age) VALUES %s'
        cursor.executemany(sql, values)
        conn.commit()
        print('Success')
    except Exception as e:
        conn.rollback()
        print('Failed', str(e))
    finally:
        cursor.close()
        conn.close()


if __name__ == '__main__':
    bulk_insert()
Python

在上面的代码中,我们先连接数据库,然后写入数据,最后关闭连接,由于我们使用了批量插入的方式,所以这种方式比单独插入快了许多。

注意点

使用批量插入对于一些臃肿或数据量较大的程序都是非常有用的,但需要注意一下几点:

  • 数据库连接池:对于每一次的数据插入操作都要建立一次数据库连接,这样会使得程序效率十分的低下,需要使用连接池;
  • 数据量过大:对于数据量过大的插入,需要注意一次传递数据的大小,防止单次插入过大,需要一次插入多次循环插入;
  • 数据类型:Python中的数据类型不能够直接对应MySQL中的数据类型,在进行数据传输的时候需要注意类型转换等问题。

总结

MySQL中的批量插入对于程序效率的提升是非常明显的,在实际的应用场景中也有广泛的应用。同时,在使用的过程中也需要注意一些问题,才能使程序更加的完善和稳定。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册