教你用Python向MySQL中插入一百万条测试数据

环境

Windows10+Python3.8+MySQL5.7

需求

在MySQL上构造一个100W条记录的表,要求有日期类型
存放5年的数据。

表结构

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| time  | datetime    | YES  |     | NULL    |                |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

程序

因为需要连接MySQL且生成随机数,所以需要用到pymysql和random包

import pymysql,random

定义函数连接MySQL

def insert():
    try:
        db = pymysql.connect("serverip","username","password","db_name" ) 
        cursor=db.cursor()
    except:
        print("连接数据库失败")
    else:
        print("连接数据库成功")

调用函数

if __name__=="__main__":
    insert()

在命令行启动python解释器执行代码

F:\dmstudy\Python>python test.py
连接数据库成功

准备一个名字集合存成txt文件

雁卉、迎梦、元柏、代萱、紫真、千青、凌寒、紫安、寒安、怀蕊、秋荷、涵雁、以山、凡梅、盼曼、翠彤、谷冬、新巧、冷安、千萍、冰烟、雅阳、友绿、南松、诗云、飞风、寄灵、书芹、幼蓉、以蓝、笑寒、忆寒、秋烟、芷巧、水香、映之、醉波、幻莲、夜山、芷卉、向彤、小玉、幼南、凡梦、尔曼、念波、迎松、青寒、笑天、涵蕾、碧菡、映秋、盼烟、忆山、以寒、寒香、小凡、代亦、梦露、映波、友蕊、寄凡、怜蕾、雁枫、水绿、曼荷、笑珊、寒珊、谷南、慕儿、夏岚、友儿、小萱、紫青、妙菱、冬寒、曼柔、语蝶、青筠、夜安、觅海、问安、晓槐、雅山、访云、翠容、寒凡、晓绿、以菱、冬云、含玉、访枫、含卉、夜白、冷安、灵竹、醉薇、元珊、幻波、盼夏、元瑶、迎曼、水云、访琴、谷波、乐之、笑白、之山、妙海、紫霜、平夏、凌旋、孤丝、怜寒、向萍、凡松、青丝、翠安、如天、凌雪、绮菱、代云、南莲、寻南、春文、香薇、冬灵、凌珍、采绿、天春、沛文、紫槐、幻柏、采文、春梅、雪旋、盼海、映梦、安雁、映容、凝阳、访风、天亦、平绿、盼香、觅风、小霜、雪萍、半雪、山柳、谷雪、靖易、白薇、梦菡、飞绿、如波、又晴、友易、香菱、冬亦、问雁、妙春、海冬、半安、平春、幼柏、秋灵、凝芙、念烟、白山、从灵、尔芙、迎蓉、念寒、翠绿、翠芙、靖儿、妙柏、千凝、小珍、天巧。妙旋、雪枫、夏菡、元绿、痴灵、绮琴、雨双、听枫、觅荷、凡之、晓凡、雅彤、香薇、孤风、从安、绮彤、之玉、雨珍、幻丝、代梅、香波、青亦、元菱、海瑶、飞槐、听露、梦岚、幻竹、新冬、盼翠、谷云、忆霜、水瑶、慕晴、秋双、雨真、觅珍、丹雪、从阳、元枫、痴香、思天、如松、妙晴、谷秋、妙松、晓夏、香柏、巧绿、宛筠、碧琴、盼兰、小夏、安容、青曼、千儿、香春、寻双、涵瑶、冷梅、秋柔、思菱、醉波、醉柳、以寒、迎夏、向雪、香莲、以丹、依凝、如柏、雁菱、凝竹、宛白、初柔、南蕾、书萱、梦槐、香芹、南琴、绿海、沛儿、晓瑶、听春、凝蝶、紫雪、念双、念真、曼寒、凡霜、飞雪、雪兰、雅霜、从蓉、冷雪、靖巧、翠丝、觅翠、凡白、乐蓉、迎波、丹烟、梦旋、书双、念桃、夜天、海桃、青香、恨风、安筠、觅柔、初南、秋蝶、千易、安露、诗蕊、山雁、友菱、香露、晓兰、白卉、语山、冷珍、秋翠、夏柳、如之、忆南、书易、翠桃、寄瑶、如曼、问柳、香梅、幻桃、又菡、春绿、醉蝶、亦绿、诗珊、听芹、新之、易巧、念云、晓灵、静枫、夏蓉、如南、幼丝、秋白、冰安、秋白、南风、醉山、初彤、凝海、紫文、凌晴、香卉、雅琴、傲安、傲之、初蝶、寻桃、代芹、诗霜、春柏、绿夏、碧灵、诗柳、夏柳、采白、慕梅、乐安、冬菱、紫安、宛凝、雨雪、易真、安荷、静竹、代柔、丹秋、绮梅、依白、凝荷、幼珊、忆彤、凌青、之桃、芷荷、听荷、代玉、念珍、梦菲、夜春、千秋、白秋、谷菱、飞松、初瑶、惜灵、恨瑶、梦易、新瑶、曼梅、碧曼、友瑶、雨兰、夜柳、香蝶、盼巧、芷珍、香卉、含芙、夜云、依萱、凝雁、以莲、易容、元柳、安南、幼晴、尔琴、飞阳、白凡、沛萍、雪瑶、向卉、采文、乐珍、寒荷、觅双、白桃、安卉、迎曼、盼雁、乐松、涵山、恨寒、问枫、以柳、含海、秋春、翠曼、忆梅、涵柳、梦香、海蓝、晓曼、代珊、春冬、恨荷、忆丹、静芙、绮兰、梦安、紫丝、千雁、凝珍、香萱、梦容、冷雁、飞柏、天真、翠琴、寄真、秋荷、代珊、初雪、雅柏、怜容、如风、南露、紫易、冰凡、海雪、语蓉、碧玉、翠岚、语风、盼丹、痴旋、凝梦、从雪、白枫、傲云、白梅、念露、慕凝、雅柔、盼柳、半青、从霜、怀柔、怜晴、夜蓉、代双、以南、若菱、芷文、寄春、南晴、恨之、梦寒、初翠、灵波、巧春、问夏、凌春、惜海、亦旋、沛芹、幼萱、白凝、初露、迎海、绮玉、凌香、寻芹、秋柳、尔白、映真、含雁、寒松、友珊、寻雪、忆柏、秋柏、巧风、恨蝶、青烟、问蕊、灵阳、春枫、又儿、雪巧、丹萱、凡双、孤萍、紫菱、寻凝、傲柏、傲儿、友容、灵枫、尔丝、曼凝、若蕊、问丝、思枫、水卉、问梅、念寒、诗双、翠霜、夜香、寒蕾、凡阳、冷玉、平彤、语薇、幻珊、紫夏、凌波、芷蝶、丹南、之双、凡波、思雁、白莲、从菡、如容、采柳、沛岚、惜儿、夜玉、水儿、半凡、语海、听莲、幻枫、念柏、冰珍、思山、凝蕊、天玉、问香、思萱、向梦、笑南、夏旋、之槐、元灵、以彤、采萱、巧曼、绿兰、平蓝、问萍、绿蓉、靖柏。迎蕾、碧曼、思卉、白柏、妙菡、怜阳、雨柏、雁菡、梦之、又莲、乐荷、寒天、凝琴、书南、映天、白梦、初瑶、恨竹、平露、含巧、慕蕊、半莲、醉卉、天菱、青雪、雅旋、巧荷、飞丹、恨云、若灵、尔云、幻天、诗兰、青梦、海菡、灵槐、忆秋、寒凝、凝芙、绮山、静白、尔蓉、尔冬、映萱、白筠、冰双、访彤、绿柏、夏云、笑翠、晓灵、含双、盼波、以云、怜翠、雁风、之卉、平松、问儿、绿柳、如蓉、曼容、天晴、丹琴、惜天、寻琴、痴春、依瑶、涵易、忆灵、从波、依柔、问兰、山晴、怜珊、之云、飞双、傲白、沛春、雨南、梦之、笑阳、代容、友琴、雁梅、友桃、从露、语柔、傲玉、觅夏、晓蓝、新晴、雨莲、凝旋、绿旋、幻香、觅双、冷亦、忆雪、友卉、幻翠、靖柔、寻菱、丹翠、安阳、雅寒、惜筠、尔安、雁易、飞瑶、夏兰、沛蓝、静丹、山芙、笑晴、新烟、笑旋、雁兰、凌翠、秋莲、书桃、傲松、语儿、映菡、初曼、听云、孤松、初夏、雅香、语雪、初珍、白安、冰薇、诗槐、冷玉、冰巧、之槐、香柳、问春、夏寒、半香、诗筠、新梅、白曼、安波、从阳、含桃、曼卉、笑萍、碧巧、晓露、寻菡、沛白、平灵、水彤、安彤、涵易、乐巧、依风、紫南、亦丝、易蓉、紫萍、惜萱、诗蕾、寻绿、诗双、寻云、孤丹、谷蓝、惜香、谷枫、山灵、幻丝、友梅、从云、雁丝、盼旋、幼旋、尔蓝、沛山、代丝、痴梅、觅松、冰香、依玉、冰之、妙梦、以冬、碧春、曼青、冷菱、雪曼、安白、香桃、安春、千亦、凌蝶、又夏、南烟。靖易、沛凝、翠梅、书文、雪卉、乐儿、傲丝、安青、初蝶、寄灵、惜寒、雨竹、冬莲、绮南、翠柏、平凡、亦玉、孤兰、秋珊、新筠、半芹、夏瑶、念文、晓丝、涵蕾、雁凡、谷兰、灵凡、凝云、曼云、丹彤、南霜、夜梦、从筠、雁芙、语蝶、依波、晓旋、念之、盼芙、曼安、采珊、盼夏、初柳、迎天、曼安、南珍、妙芙、语柳、含莲、晓筠、夏山、尔容、采春、念梦、傲南、问薇、雨灵、凝安、冰海、初珍、宛菡、冬卉、盼晴、冷荷、寄翠、幻梅、如凡、语梦、易梦、千柔、向露、梦玉、傲霜、依霜、灵松、诗桃、书蝶、恨真、冰蝶、山槐、以晴、友易、梦桃、香菱、孤云、水蓉、雅容、飞烟、雁荷、代芙、醉易、夏烟、山梅、若南、恨桃、依秋、依波、香巧、紫萱、涵易、忆之、幻巧、水风、安寒、白亦、惜玉、碧春、怜雪、听南、念蕾、梦竹、千凡、寄琴、采波、元冬、思菱、平卉、笑柳、雪卉、南蓉、谷梦、巧兰、绿蝶、飞荷、平安、孤晴、芷荷、曼冬、寻巧、寄波、尔槐、以旋、绿蕊、初夏、依丝、怜南、千山、雨安、水风、寄柔、念巧、幼枫、凡桃、新儿、春翠、夏波、雨琴、静槐、元槐、映阳、飞薇、小凝、映寒、傲菡、谷蕊、笑槐、飞兰、笑卉、迎荷、元冬、书竹、半烟、绮波、小之、觅露、夜雪、春柔、寒梦、尔风、白梅、雨旋、芷珊、山彤、尔柳、沛柔、灵萱、沛凝、白容、乐蓉、映安、依云、映冬、凡雁、梦秋、醉柳、梦凡、秋巧、若云、元容、怀蕾、灵寒、天薇、白风、访波、亦凝、易绿、夜南、曼凡、亦巧、青易。冰真、白萱、友安、诗翠、雪珍、海之、小蕊、又琴、香彤、语梦、惜蕊、迎彤、沛白、雁山、易蓉、雪晴、诗珊、春冬、又绿、冰绿、半梅、笑容、沛凝、念瑶、天真、含巧、如冬、向真、从蓉、春柔、亦云、向雁、尔蝶

用python读取文件并切割成名字列表

fp=open("name.txt","r",encoding="UTF-8")
names=fp.read().split('、')

生成2015-01-01到2019-12-31之间任意一天的格式化时间

year=random.randint(2015,2019)
month=random.randint(1,12)
day=random.randint(1,31)
time=''.join([str(year),'/',str(month),'/',str(day)])

随机选名

index_name=random.randint(0,len(names)-1)
name=names[index_name]

将数据插入到数据库中

try:
    cursor.execute("insert into test(time,name) values('{}','{}')".format(time,name))
    db.commit()
except Exception as e:
    print("第{}条数据插入失败!原因:{}".format(i,e))
else:
    print("第{}条数据插入成功!".format(i))

启动循环,批量生成

for i in range(num):
    index_name=random.randint(0,len(names)-1)
    year=random.randint(2015,2019)
    month=random.randint(1,12)
    day=random.randint(1,31)
    name=names[index_name]
    time=''.join([str(year),'/',str(month),'/',str(day)])
    try:
        cursor.execute("insert into test(time,name) values('{}','{}')".format(time,name))
        db.commit()
    except Exception as e:
        print("第{}条数据插入失败!原因:{}".format(i,e))
    else:
        print("第{}条数据插入成功!".format(i))
    finally:
        pass

完整代码

import pymysql,random
def insert(num):
    fp=open("name.txt","r",encoding="UTF-8")
    names=fp.read().split('、')
    pymysql.connect("serverip","username","password","db_name" ) 
    cursor = db.cursor()
    for i in range(num):
        index_name=random.randint(0,len(names)-1)
        year=random.randint(2015,2019)
        month=random.randint(1,12)
        day=random.randint(1,31)
        name=names[index_name]
        time=''.join([str(year),'/',str(month),'/',str(day)])
        try:
            cursor.execute("insert into test(time,name) values('{}','{}')".format(time,name))
            db.commit()
        except Exception as e:
        	print("第{}条数据插入失败!原因:{}".format(i,e))
        else:
        	print("第{}条数据插入成功!".format(i))
        finally:
        	pass
    db.close()

if __name__=="__main__":
    insert(1000000)

运行截屏
在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页