目录
faker造数据
一、生成数据并写入txt文件中
import csv
from faker import Faker
#写入数据到csv文件
def write_csv():
#实例化faker库,zh-CN允许生成中文
fake = Faker('zh-CN')
#open()打开一个csv文件,以a+追加方式打开,encoding='utf-8'允许插入中文
with open('data.csv','a+',encoding='utf-8') as csvfile:
#设置字段
fieldnames = ['id','name','phone','python']
#DictWriter以字典形式写入csv文件
writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
#调用writerheader()先写入头信息
writer.writeheader()
for i in range(1,100000000):
ctx = {
'id':i,
'name':fake.name(),
'phone':fake.phone_number(),
'python':fake.sha256(raw_output=False)
}
print(ctx)
#调用writerows方法写入多行,方法使用:writerows([])
writer.writerows([ctx])
#读取csv文件内容
def read_csv():
with open('data.csv','r',encoding='utf-8') as csvfile:
#reader()读取文件内容
reader = csv.reader(csvfile)
for row in reader:
print(row)
if __name__ == "__main__":
write_csv()
read_csv()
二、生成insert语句,并在数据库中执行
#常用方法查询:https://www.jianshu.com/p/d227d6522428
# Faker 是一个可以让你生成伪造数据的Python包
#pip3 install pymysql
import pymysql
#pip3 install faker
from faker import Faker
class Faker_mysql(object):
def __init__(self,conn):
self.conn = conn
#建表语句函数,这里给出表结构,如果使用已存在的表,可以不创建表。
def create_table(self):
create_table_sql="""
create table user(
id int PRIMARY KEY auto_increment,
username VARCHAR(20),
password VARCHAR(20),
address VARCHAR(35)
)
"""
return create_table_sql
#插入数据
def insert_data(self):
#创建游标
cursor = self.conn.cursor()
#调用建表函数
# create_table = self.create_table()
#执行sql语句
# cursor.execute(create_table)
#实例化Faker库,选择中文 zh-CN
fake = Faker("zh-CN")
while True:
#使用Faker库生成假数据,将其转为字典格式,方便插入数据库
ctx = {
'username':fake.name(),
'password':fake.password(special_chars=False),
'address':fake.address()
}
print(ctx)
sql="""
insert into user(%s) value(%s)"""%(','.join([k for k,v in ctx.items()]),
','.join(['%s' for k,v in ctx.items()])
)
try:
cursor.execute(sql,[v for k,v in ctx.items()])
self.conn.commit()
except:
print('失败')
self.conn.rollback()
if __name__ == "__main__":
#连接数据库
#host(ip地址),prot(端口号),user(用户),password(密码),database/db(数据库),charset='utf8'
conn = pymysql.connect(host="localhost",
port=3306,
user="root",
password="python3..",
db="fakerceshi",
charset="utf8")
print('链接成功')
faker_mysql = Faker_mysql(conn)
faker_mysql.insert_data()
三、扩展自定义的参数:foo获取list中随机值
from faker import Faker
import random
fake = Faker()
# first, import a similar Provider or use the default one
from faker.providers import BaseProvider
my_word_list = [
'danish','cheesecake','sugar',
'Lollipop','wafer','Gummies',
'sesame','Jelly','beans',
'pie','bar','Ice','oat' ]
# create new provider class
class MyProvider(BaseProvider):
def foo(self):
return random.choice(my_word_list)
# then add new provider to faker instance
fake.add_provider(MyProvider)
# now you can use:
print(fake.foo())
四、扩展entence():随机生成一句话,扩展句的单词
from faker import Faker
fake = Faker()
my_word_list = [
'danish','cheesecake','sugar',
'Lollipop','wafer','Gummies',
'sesame','Jelly','beans',
'pie','bar','Ice','oat' ]
fake.sentence()
# 'Expedita at beatae voluptatibus nulla omnis.'
fake.sentence(ext_word_list=my_word_list)
print(fake.sentence(ext_word_list=my_word_list))
五、参考文章
https://www.yuque.com/docs/share/ffa4c29d-f90c-47e0-8fbc-a4df819e59f2?#
https://www.jianshu.com/p/d227d6522428