python随机生成数据库数据之一步一步教你数据造假成为道德主席-取名器-.-xswl-pydbgen || Faker

简介

自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端。。。。。不能重复的叫什么科学,丢人

开始

原理

基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形、浮点型数据,借助数组思想加上随机数就可以随机生成字符串,英文就26个字母,中文的会就需要自己选取多一点像名字的“字”拼成姓名了,毕竟单单靠笔画、偏旁来组成汉字,这又要写一个映射,有没有人写了并公开呢???never mind.

随机生成英文名案例

通过循环批量插入随机生成的用户名、性别、年龄记录 - leedaning: php

function getName() {
$singleWord = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$singleWords = 'abcdefghijklmnopqrstuvwxyz';
$length = strlen($singleWord);

for ($i = 0; $i < rand(3, $length); $i++) {
	if ($i == 0) {
		$name .= substr($singleWord, rand(1, $length)-1, 1);
	}else { 
		$name .= substr($singleWords, rand(1, $length)-1, 1);
	}
}

return $name;
}

python

Python随机生成数据插入数据库 - 魂尾ac
python的random不是一般的好用,简化了很多操作,比如上面的java生成英文名在这里一行代码就完事了,还支持一行代码枚举,人生苦短,我爱python


for i in range(count):
	core = random.choice(['yuwen', 'shuxue', 'yingyu'])
	grade = random.randint(59, 100)
	name = ''.join(random.sample(['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'], 10))
	name_ch = ''.join(
	      random.sample([
	          '张', '赵', '钱', '孙', '李', '易', '东', '春', '南', '秋', '子', '山',
	          '想', '海', '崇', '熵', '思', '婷', '旭', '宸', '恨', '爱', '果', '青', '莲', '瑞'
	      ],  random.randint(2,4)))
	addr = random.choice(['一', '二', '五', '五四', '小红', '公主'])+random.choice(['楼', '苑', '实验室','仓库'])+random.choice(['北', '东', '西','南'])+"门"

在这里插入图片描述

在这里插入图片描述

pydbgen

安装

$ pip install pydbgen

我这里下载的版本是 1.0.5

使用

不知道为什么其它博客都是两行import,使用import pydbgen则会报错AttributeError: module 'pydbgen' has no attribute 'pydb',我想这个模块设计原则和opencv-py差不多吧。

from pydbgen import pydbgen # 导入pydbgen

myDB = pydbgen.pydb()	# 实例化对象
for _ in range(10):	# 随机生成十个车牌
        print(myDB.license_plate())

mysql demo

from pydbgen import pydbgen # 导入pydbgen

myDB = pydbgen.pydb()	# 实例化对象
myDB.gen_table(db_file='keyDemo',
                   table_name='staff',
                   fields=['name', 'city', 'street_address', 'email'])

结果居然报错。。。。

Traceback (most recent call last):
  File "D:\Documents\CAU\Lion\repositiries\Python\fb\sql.py", line 80, in <module>
    myDB.gen_table(db_file='keyDemo',
  File "C:\Users\Kearney\.virtualenvs\fb-xzc3iOtr\lib\site-packages\pydbgen\pydbgen.py", line 430, in gen_table
    temp_df = self.gen_dataframe(num=num,fields=fields,real_email=real_email,real_city=real_city,phone_simple=phone_simple)        
  File "C:\Users\Kearney\.virtualenvs\fb-xzc3iOtr\lib\site-packages\pydbgen\pydbgen.py", line 330, in gen_dataframe
    df = pd.DataFrame(data=self.gen_data_series(num,data_type=fields[0]),columns=[fields[0]])
  File "C:\Users\Kearney\.virtualenvs\fb-xzc3iOtr\lib\site-packages\pydbgen\pydbgen.py", line 191, in gen_data_series
    fake.seed(self.seed)
  File "C:\Users\Kearney\.virtualenvs\fb-xzc3iOtr\lib\site-packages\faker\proxy.py", line 92, in __getattribute__
    raise TypeError(msg)
TypeError: Calling `.seed()` on instances is deprecated. Use the class method `Faker.seed()` instead.

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值