简介
自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端。。。。。不能重复的叫什么科学,丢人
开始
原理
基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形、浮点型数据,借助数组思想加上随机数就可以随机生成字符串,英文就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.