• 计划一:应用 executemany 一次 + commit 一次
  • 计划二:应用 execute 10000 次 + commit 一次
  • 计划三:应用 (execute + commit) 都 10000 次

生成伪数据

fake: Faker = Faker(locale='zh_CN')start = time.time()tables = []for i in range(10000):    row = (fake.name(), fake.text())    tables.append(row)    # print(row)end = time.time()print(f'生成数据实现! pay time is {end - start} s')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')

计划一

print('开始计划一......')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        sql = 'insert into tweet (`username`,`content`) values (%s,%s) '        cursor.executemany(sql, tables)        connection.commit()    end = time.time()    print(f'计划一:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)

计划二

print('开始计划二......')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        for row in tables:            sql = 'insert into tweet (`username`,`content`) values (%s,%s) '            cursor.execute(sql, row)        connection.commit()    end = time.time()    print(f'计划二:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)

计划三

print('开始计划三......')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        for row in tables:            sql = 'insert into tweet (`username`,`content`) values (%s,%s) '            cursor.execute(sql, row)            connection.commit()    end = time.time()    print(f'计划三:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)

运行后果

生成数据实现! pay time is 1.2480072975158691 s开始计划一......计划一:插入数据实现! pay time is 2.1816399097442627 s开始计划二......计划二:插入数据实现! pay time is 27.0793399810791 s开始计划三......计划三:插入数据实现! pay time is 247.8990249633789 s

能够看到

速度:计划一 > 计划二 > 计划三

残缺代码

import pymysqlfrom pymysql.connections import Connectionfrom pymysql.cursors import Cursorfrom faker import Fakerimport timefake: Faker = Faker(locale='zh_CN')start = time.time()tables = []for i in range(10000):    row = (fake.name(), fake.text())    tables.append(row)    # print(row)end = time.time()print(f'生成数据实现! pay time is {end - start} s')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')print('开始计划一......')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        sql = 'insert into tweet (`username`,`content`) values (%s,%s) '        cursor.executemany(sql, tables)        connection.commit()    end = time.time()    print(f'计划一:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)# --------------------------------------------------------------------print('开始计划二......')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        for row in tables:            sql = 'insert into tweet (`username`,`content`) values (%s,%s) '            cursor.execute(sql, row)        connection.commit()    end = time.time()    print(f'计划二:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)# --------------------------------------------------------------------print('开始计划三......')connection: Connection = pymysql.connect(    user='root',    password='yourpassword',    host='192.168.31.203',    port=3306,    database='test_001')with connection:    # 创立数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = """        create table if not exists `tweet`(            `id` bigint NOT NULL AUTO_INCREMENT,            `username` varchar(255) NOT NULL,            `content` varchar(255) NOT NULL,            PRIMARY KEY (`id`)        )        """        cursor.execute(sql)    start = time.time()    # 插入数据    with connection.cursor() as cursor:        cursor: Cursor        for row in tables:            sql = 'insert into tweet (`username`,`content`) values (%s,%s) '            cursor.execute(sql, row)            connection.commit()    end = time.time()    print(f'计划三:插入数据实现! pay time is {end - start} s')    # 删除数据表    with connection.cursor() as cursor:        cursor: Cursor        sql = 'drop table tweet;'        cursor.execute(sql)