Bootstrap

python faker模块做假数据到数据库

一、faker库简介

在编写程序过程中,我们常常需要用到很多数据来进行测试。

如果要是手动制造数据的话,肯定要花费大把精力,这不合理。

此时我们应该使用Faker这个Python库,用它来生成各种各样的伪数据。

二、依赖库安装

pip install faker -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/

三、数据库表信息

CREATE TABLE ` kszy_ destination _user ` (
  `id` bigint(20) NOT NULL COMMENT '自增id,用户id',
  `tenant_identifier` varchar(64) DEFAULT NULL COMMENT '租户标识符',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `created_by` varchar(64) DEFAULT NULL COMMENT '创建者id',
  `metadata` varchar(255) DEFAULT NULL COMMENT '元数据',
  `address` varchar(255) DEFAULT NULL COMMENT '单位详细地址',
  `administrative_region` varchar(255) DEFAULT NULL COMMENT '行政区',
   `age` int(20) DEFAULT NULL COMMENT '年龄',
   `company` varchar(255) DEFAULT NULL COMMENT '单位',
  `contact_phone` varchar(255) DEFAULT NULL COMMENT '联系电话',
  `id_card_num` varchar(255) DEFAULT NULL COMMENT '证件号码',
  `name` varchar(255) DEFAULT NULL COMMENT '姓名',
  `sex` varchar(4) DEFAULT NULL COMMENT '性别',
  `id_card_type` varchar(255) DEFAULT NULL COMMENT '证件类型',
  PRIMARY KEY (`id`),
  KEY `id_card_num_index` (`id_card_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

四、代码

import pymysql
from faker import Faker
import random
#连接接数据库
db=pymysql.connect(
        user="root",
        password="123456",
        port=3306,
        host="127.0.0.1",
        db="cmdb",
        charset="utf8"
)
# 使用 cursor() 方法创建一个游标对象cur
cur = db.cursor()
fk = Faker(locale="zh-CN")
  
for i in range(5,8):
    number = fk.credit_card_number()
    res2 = fk.date_between(start_date="-3y", end_date="-1y")
    number2 = fk.credit_card_number()
    address = fk.address()
    province = fk.province()
    #因为没有找到生成年龄的方法所以用random来生成随机数作为年龄
    age = random.randint(20,40)
    compancy = fk.company()
    phone = fk.phone_number()
    name = fk.name()
    #性别和年龄一样
    num = random.randint(1,2)
    if num == 1 :
        sex = '男'
    else:
        sex = '女'
    card = fk.ssn()
    sql="""insert into  kszy_destination_user(id,tenant_identifier,created_at,created_by,metadata,address,administrative_region,age,company,contact_phone,id_card_num,name,sex,id_card_type)values(%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"""%(i,number,res2,number2,number2,address,province,age,compancy,phone,card,name,sex,card)
    print(sql)
    try:
        cur.execute(sql)
        db.commit()
    except Exception as e:
            print('错误:{}'.format(str(e)))
            db.rollback()
db.close()

由于网上有很多关于faker的用法,这里就不作过多介绍了,需要的话可以自行百度

;