Loading

python随机生成个人信息

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

posted @ 2019-12-13 11:52  Outsrkem  阅读(1191)  评论(0编辑  收藏  举报