当使用python工具往数据库添加内容时,如果一行一行往数据库添加内容,效率会很低下,如果添加的数据量很大,可能造成等待时间过长的问题,这里可以批量处理的方式进行数据添加,方式如下面代码所示:
insert语句后面参数用列表代替,列表里面包含的是多个元组,一个元组代表的是一行数据,多个元组就代表多行内容,使用此方式可大大减少添加数据的等待时间
"""
插入大量数据
"""
import random
import MySQLdb
from utils import random_string
conn = MySQLdb.connect(host='47.104.31.138', port=3306,
user='root', password='Luohao.618',
database='hrs', charset='utf8')
try:
with conn.cursor() as cursor:
for i in range(10):
# 定义列表参数
params = []
for j in range(1, 101):
username = f'user{100 * i + j}'
password = random_string(random.randint(8, 20))
params.append((username, password))
cursor.executemany(
'insert into tb_user (username, password) values (%s, %s)',
params # 此处从一个单元组编程了包含多个元组的列表
)
# 4. 提交事务
conn.commit()
except MySQLdb.MySQLError as err:
print(err)
# 4. 回滚事务
conn.rollback()
finally:
# 5. 关闭数据库连接(释放资源)
conn.close()