Python批量造数并利用pymysql写入到数据库之multiprocessing多进程、threading多线程实现方式(学习笔记)

这篇博客介绍了如何使用Python批量生成数据并利用pymysql库写入到MySQL数据库。通过multiprocessing和threading模块,实现了多进程和多线程的高效数据插入。博主分享了从生成姓名文本文件,到设置数据库环境,再到使用Python代码操作数据库的全过程,旨在帮助自动化测试初学者提升学习效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.导包

import random
import string
import pymysql
import time
import multiprocessing  # multiprocessing包是Python中的多进程管理包,支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件
import threading    # threading模块中包含了关于线程操作的丰富功能,包括:常用线程函数,线程对象,锁对象,递归锁对象,事件对象,条件变量对象,信号量对象,定时器对象,栅栏对象。

2.造数--生成要写入数据库的数据

#   数据生成部分------------公共------------------------------------------------------------------------------------------------------------------------------(始)
class CreateData(object):
    # 获取姓名
    def get_name(self):
        # 打开文件‘金庸小说人物14部1420人.txt’、‘古龙小说人物男.txt’、‘金庸小说人物女.txt’读取为UTF-8格式;(注:本地txt文件内的人物名之间必须以英文逗号,隔开,不换行,无其它符号)
        fp = open("D:\my_python\Scripts\ProjectFile\其他\金庸小说人物14部1420人.txt", "r", encoding="UTF-8")
        names_1 = fp.read().split(',')   # 读取文件全部内容,并切割成列表
        return random.choice(names_1)  # 从姓名列表names_1中随机选取一个元素(姓名)并返回
        fp.close()
    # 获取性别
    def get_sex(self):
        return random.choice(["男","女"])  # random.randint()的参数应该是一个整数,而不是一个列表,可以将代码修改为:random.choice()
    # 获取年龄
    def get_age(self):
        return random.randint(18,75)
    # 获取电话
    def get_tel(self):
        get_tel = '131'
        for i in range(8):
            get_tel += str(random.randint(0, 9))
        return get_tel
    # 获取邮件
    def get_emailn(self):
        str_char = ""
        get_char = string.ascii_letters + string.digits  # +string.punctuation  # 随机选值的容器:数字、大小写、符号
        get_len = random.randint(4, 6)  # 定义随机的4~6位数字
        for i in range(1, get_len + 1):
            str_char += random.choice(get_char)
        return str_char
    def get_email(self):
        return self.get_emailn() + random.choice(["@163.com", "@126.com", "@gmail.com","@outlook.com","@my.com"])  # 此处调用get_email1方法
    # 声明一个方法,可以使一条数据放在一个列表
    def get_one_data(self):
        # 此处返回的数据顺序最好与创建表时的结构顺序一致,以便插入数据时一一对应
        return [self.get_name(),self.get_sex(),self.get_age(),self.get_tel(),self.get_email()]
# # 测试代码
# if __name__ == "__main__":
#     data = CreateData()  # 实例化类方法
#     print("姓名:",data.get_name())
#     print("性别:",data.get_sex())
#     print("年龄:",data.get_age())
#     print("电话:",data.get_tel())
#     print("邮件:",data.get_email())
#
#   数据生成部分------------公共------------------------------------------------------------------------------------------------------------------------------(止)

2.1.生成姓名需要的txt文件(复制内容到新建文件保存为txt文本),复制文件所在路径到代码中,要绝对路径,否则可能无法读取


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兲人有恏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值