使用Python对MySQL数据库插入二十万条数据

Posted Test-Admin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python对MySQL数据库插入二十万条数据相关的知识,希望对你有一定的参考价值。

1、当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了。

import pymysql
import random
import string

# 建立数据库连接
mysql =  pymysql.connect(host="数据库IP", user="数据库用户名",port=3306,password="数据库密码", charset=utf8, autocommit=True)
# 建立游标
cursor = mysql.cursor(pymysql.cursors.DictCursor)

# 定义要执行的SQL语句
for i in range(1,200001):  # for循环来组合新增语句
    jbxx_unid =8183 + i     # ID从目前数据库中最大的一个开始
    #   UUID是32位字母加数字组成,所以先生成随机26位字母加数字随机数,然后加上序号保证UUID的唯一性
    ran_str = ‘‘.join(random.sample(string.ascii_letters + string.digits, 26))
    i_len = len(str(i))
    if i_len == 1:
        jbxx_uuid = ran_str.lower() +"00000" + str(i)
    elif i_len == 2:
        jbxx_uuid = ran_str.lower() + "0000" + str(i)
    elif i_len == 3:
        jbxx_uuid = ran_str.lower() + "000" + str(i)
    elif i_len == 4:
        jbxx_uuid = ran_str.lower() + "00" + str(i)
    elif i_len == 5:
        jbxx_uuid = ran_str.lower() + "0" + str(i)
    else:
        jbxx_uuid = ran_str.lower() + str(i)
    #   需要插入数据的数据要唯一性的都加循环数字
    jbxx_psid = 9998942509 + i
    jbxx_name = "test" + str(i)
    #   新增的SQL语句,用format来替换我们的参数。
    sql = """
    INSERT INTO `myslave`.`t_ps_jbxx` (
        `jbxx_unid`,
        `jbxx_uuid`,
        `jbxx_cdate`,
        `jbxx_udate`,
        `jbxx_psid`,
        `jbxx_name`,
        `jbxx_sex`,
        `jbxx_mz`,
        `jbxx_zbm`,
        `jbxx_zbmczqk`,
        `jbxx_gj`,
        `jbxx_sjf`,
        `jbxx_swf`,
        `jbxx_whcd`,
        `jbxx_tctsjn`,
        `jbxx_birthday`,
        `jbxx_sfzhm`,
        `jbxx_age`,
        `jbxx_zjxy`,
        `jbxx_xycd`,
        `jbxx_bqmm`,
        `jbxx_bqzy`,
        `jbxx_rjqzw`,
        `jbxx_zffl`,
        `jbxx_cyjb`,
        `jbxx_sisheqk`,
        `jbxx_sishiqk`,
        `jbxx_gldj`,
        `jbxx_hkfl`,
        `jbxx_jjs`,
        `jbxx_yyymjjsqk`,
        `jbxx_ypxqq`,
        `jbxx_ypxqz`,
        `jbxx_xxqq`,
        `jbxx_xxqz`,
        `jbxx_ypxq`,
        `jbxx_xxq`,
        `jbxx_yx`,
        `jbxx_dbjg`,
        `jbxx_dbrq`,
        `jbxx_spjg`,
        `jbxx_pjrq`,
        `jbxx_rjsj`,
        `jbxx_rdsj`,
        `jbxx_gydw`,
        `jbxx_drdw`,
        `jbxx_dbddqk`,
        `jbxx_grjl`,
        `jbxx_zybz`,
        `jbxx_curs`,
        `jbxx_arcode`,
        `jbxx_isFull`,
        `jbxx_abbr`,
        `jbxx_lgf`,
        `jbxx_sfzk`,
        `jbxx_sfxxy`,
        `jbxx_sfem`,
        `jbxx_password`,
        `jbxx_hy`,
        `jbxx_zm`,
        `jbxx_xxytype`,
        `jbxx_epassword`
    )
    VALUES
        (
            ‘{0}‘,
            ‘{1}‘,
            ‘2018-03-23 16:25:37‘,
            ‘2020-01-07 15:31:51‘,
            ‘{2}‘,
            ‘{3}‘,
            ‘1‘,
            ‘15‘,
            NULL,
            NULL,
            ‘520600‘,
            NULL,
            NULL,
            ‘80‘,
            NULL,
            ‘1974-07-08 00:00:00‘,
            NULL,
            ‘45‘,
            ‘00‘,
            NULL,
            ‘13‘,
            ‘90000‘,
            ‘000‘,
            ‘1‘,
            NULL,
            ‘‘,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            ‘2006-12-05 00:00:00‘,
            ‘2022-09-04 00:00:00‘,
            ‘2006-12-05 00:00:00‘,
            ‘2022-09-04 00:00:00‘,
            ‘150900‘,
            ‘150900‘,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            ‘3319‘,
            NULL,
            NULL,
            NULL,
            ‘1‘,
            ‘0c3be3ee22ab48158433bf0a054edad8‘,
            ‘3319110000‘,
            ‘0‘,
            ‘HPJ‘,
            NULL,
            NULL,
            ‘0‘,
            ‘0‘,
            ‘123456789‘,
            ‘20‘,
            ‘盗窃、抢劫‘,
            ‘SWFXXY‘,
            ‘‘
        );
    """.format(jbxx_unid,jbxx_uuid,jbxx_psid,jbxx_name)
    # 执行SQL语句
    cursor.execute(sql)
    print("成功插入{}条数据!".format(i))

# 关闭光标对象
cursor.close()
# 关闭数据库连接
print("插入完成所有数据!关闭数据库连接!")
mysql.close()

以上是关于使用Python对MySQL数据库插入二十万条数据的主要内容,如果未能解决你的问题,请参考以下文章

Python之路(二十六):Mysql(上)

Java怎么实现几十万条数据插入(30万条数据插入MySQL仅需13秒)

批量向MySQL导入1000万条数据的优化

c#中往mysql里批量插入上万条数据,有比较高效的方法吗

mysql 表记录超过十万条后,查询速度特别慢?

4分钟插入1000万条数据到mysql数据库表