faker造数据

目录

faker造数据

一、生成数据并写入txt文件中

二、生成insert语句,并在数据库中执行

三、扩展自定义的参数:foo获取list中随机值

四、扩展entence():随机生成一句话,扩展句的单词

五、参考文章


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

https://blog.csdn.net/adorable_/article/details/111997189

sql.execute方法:https://blog.csdn.net/mjjyszazc/article/details/88932664?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值