outsrkem

python随机生成个人信息

 

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import sys
import random

class PersonalInformation():
    # 生成姓名
    def Names_of_generated(self):
        list_Xing = [
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'羿\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'宿\', \'\', \'怀\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'寿\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'广\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'万俟\', \'司马\', \'上官\', \'欧阳\', \'夏侯\', \'诸葛\', \'闻人\', \'乐正\', \'壤驷\', \'公良\', \'拓跋\', \'漆雕\', \'夹谷\', \'宰父\',
            \'东方\', \'赫连\', \'皇甫\', \'尉迟\', \'公羊\', \'澹台\', \'公冶\', \'宗政\', \'濮阳\', \'淳于\', \'单于\', \'太叔\', \'申屠\', \'公孙\',
            \'仲孙\', \'南宫\', \'南门\', \'呼延\', \'羊舌\', \'微生\', \'梁丘\', \'左丘\', \'东门\', \'西门\', \'东郭\', \'巫马\', \'公西\', \'谷梁\',
            \'轩辕\', \'令狐\', \'钟离\', \'宇文\', \'长孙\', \'慕容\', \'鲜于\', \'闾丘\', \'司徒\', \'司空\', \'亓官\', \'司寇\', \'颛孙\', \'端木\',
            \'子车\', \'百里\', \'段干\'
        ]
        list_Ming = [
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'广\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\',
            \'\', \'\', \'\', \'\', \'\', \'\'
        ]
        return random.choice(list_Xing) + random.choice(list_Ming) + random.choice(list_Ming)

    # 生成有效手机号码
    def phoneNORandomGenerator(self):
        prelist = ["130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "147", "150", "151", "152",
                   "153", "155", "156", "157", "158", "159", "186", "187", "188"]
        return random.choice(prelist) + "".join(random.choice("0123456789") for i in range(8))

    def emaliInfo(self, phone):
        eList = [\'@163.com\', \'@126.com\', \'@qq.com\',
                 \'@sina.com\', \'@soho.com\', \'@yeah.com\', \'@139.com\']
        return phone + random.choice(eList)

    def ageInfo(self):
        return random.randint(12, 60)

    def sexInfo(self):
        sex = random.choice([\'\', \'\'])
        return sex

    def getBirthday(self):
        # 随机生成年月日
        year = random.randint(1960, 2000)
        month = random.randint(1, 12)
        # 判断每个月有多少天随机生成日
        if year % 4 == 0:
            if month in (1, 3, 5, 7, 8, 10, 12):
                day = random.randint(1, 31)
            elif month in (4, 6, 9, 11):
                day = random.randint(1, 30)
            else:
                day = random.randint(1, 29)
        else:
            if month in (1, 3, 5, 7, 8, 10, 12):
                day = random.randint(1, 31)
            elif month in (4, 6, 9, 11):
                day = random.randint(1, 30)
            else:
                day = random.randint(1, 28)
        # 小于10的月份前面加0
        if month < 10:
            month = \'0\' + str(month)
        if day < 10:
            day = \'0\' + str(day)
        birthday = str(year) + str(month) + str(day)
        return birthday

    def idnum(self, Birthday, sex):
        province_id = [11, 12, 13, 14, 15, 21, 22, 23, 31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 45, 46, 50, 51, 52,
                       53, 54, 61, 62, 63, 65, 65, 81, 82, 83]
        id_num = \'\'
        # 随机选择地址码
        id_num += str(random.choice(province_id))
        # 随机生成4-6位地址码
        for i in range(4):
            ran_num = str(random.randint(0, 9))
            id_num += ran_num
        b = Birthday
        id_num += b
        # 生成15、16位顺序号
        num = \'\'
        for i in range(2):
            num += str(random.randint(0, 9))
        id_num += num
        # 通过性别判断生成第十七位数字 男单 女双
        s = sex
        if s == \'\':
            # 生成奇数
            seventeen_num = random.randrange(1, 9, 2)
        else:
            seventeen_num = random.randrange(2, 9, 2)

        id_num += str(seventeen_num)
        eighteen_num = str(random.randint(1, 10))
        if eighteen_num == \'10\':
            eighteen_num = \'X\'
        id_num += eighteen_num
        return id_num


def PersonalInfo():
    PersonalInfo = PersonalInformation()
    info = {}
    info[\'name\'] = PersonalInfo.Names_of_generated()
    info[\'age\'] = PersonalInfo.ageInfo()
    info[\'sex\'] = PersonalInfo.sexInfo()
    info[\'birthday\'] = PersonalInfo.getBirthday()
    info[\'idnum\'] = PersonalInfo.idnum(info[\'birthday\'], info[\'sex\'])
    info[\'phone\'] = PersonalInfo.phoneNORandomGenerator()
    info[\'emali\'] = PersonalInfo.emaliInfo(info[\'phone\'])

    return info


PersolInfo = PersonalInfo()
print(PersolInfo)

 

插入到数据库,继上面的脚本

from sqlalchemy import create_engine, Table, MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session
import threading
\'\'\'
--- 创建数据表;
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` varchar(2) default \'\',
  `birthday` char(8) DEFAULT NULL,
  `idnumber` char(18) DEFAULT NULL,
  `phone` char(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
\'\'\'


if __name__ == \'__main__\':
    DB_USERNAME = \'lis\'   # 数据库 用户
    DB_PASSWORD = \'123456\'      # 密码
    DB_HOSTIP = \'10.10.10.24\'  #    IP
    DB_PORT = \'3306\'        # 端口
    DB_DATABASE = \'test\'        #库名
    engine = create_engine(
        \'mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8\' % (DB_USERNAME, DB_PASSWORD, DB_HOSTIP, DB_PORT, DB_DATABASE))
    DBsession = sessionmaker(bind=engine)
    dbsession = scoped_session(DBsession)  # 线程安全
    Base = declarative_base()
    md = MetaData(bind=engine)  # 自动加载表结构


    class Userinfo(Base):
        __table__ = Table(\'Userinfo\', md, autoload=True)

    def install():
        PerInfo = PersonalInfo()
        user = Userinfo(name=PerInfo[\'name\'],email=PerInfo[\'emali\'], age=PerInfo[\'age\'],sex=PerInfo[\'sex\'],birthday= PerInfo[\'birthday\'],idnumber=PerInfo[\'idnum\'],phone=PerInfo[\'phone\'])
        dbsession.add(user)
        dbsession.commit()


    threads = []
    for i in range(500):
        t = threading.Thread(target=install)
        threads.append(t)
    # 打开线程活动
    for thr in threads:
        thr.start()
    # 等待至线程中止
    for thr in threads:
        thr.join()

 

 

参考博客: https://www.cnblogs.com/lxmtx/p/11840221.html

分类:

技术点:

相关文章: