Python 有了faker从此再不为测试数据而烦恼

文章开篇

Python的魅力,犹如星河璀璨,无尽无边;人生苦短、我用Python!


Faker简介

在开发项目中,为了测试需要模拟真实环境并生成数据时,手工造数可能效率低下且结果不自然;
Faker库可以帮助我们快速、高效和自然的生成各种类型的虚假数据
如例如姓名、地址、电子邮件、电话号码、日期、时间、银行卡号、IP地址等;
官方项目地址见:https://github.com/joke2k/faker
官方文档地址见:https://faker.readthedocs.io/en/master/index.html


安装Faker库

Faker属于第三方Python库,使用前需要额外下载安装,命令如下;

pip install faker

使用Faker包

Faker包支持多种语言和地区,默认情况下为英语;
如果需要生成其他语言或地区的虚假数据,可以在实例化Faker类时指定语言和地区;
介绍几个比较常见的地区代号

  • 简体中文:zh_CN
  • 繁体中文:zh_TW
  • 美国英文:en_US
  • 英国英文:en_GB
  • 德文:de_DE
  • 日文:ja_JP
  • 韩文:ko_KR
  • 法文:fr_FR

安装完成后,可以在python文件中导入faker库,示例如下:

# 导入Faker库的方式
from faker import Faker

# 默认实例化,生成en_US美国文化
faker = Faker()
print("生成姓名", faker.name())         # Tina Wright
print("生成手机", faker.phone_number()) # (349)583-8198x71583
print("生成邮箱", faker.email())        # jacobscarolyn@example.net

# 指定地区实例化,生成zh_CN中国文化
faker = Faker(locale="zh_CN")
print("生成姓名", faker.name())         # 李敏
print("生成手机", faker.phone_number()) # 13981229037
print("生成邮箱", faker.email())        # mingyan@example.net

虚拟数据生成方法分类词典

classifier_dict = {
    '人物': {
        '姓名': 'fake.name()',
        '姓名(男)': 'fake.name_male()',
        '姓名(女)': 'fake.name_female()',
        '姓': 'fake.last_name()',
        '名字': 'fake.first_name()',
        '名字(男)': 'fake.first_name_male()',
        '名字(女)': 'fake.first_name_female()',
    },
    '地址': {
        '地址': 'fake.address()',
        '楼名': 'fake.building_number()',
        '完整城市名': 'fake.city()',
        '城市名字(不带市县)': 'fake.city_name()',
        '城市后缀名': 'fake.city_suffix()',
        '国家名称': 'fake.country()',
        '地区': 'fake.district()',
        '邮编': 'fake.postcode()',
        '省': 'fake.province()',
        '街道地址': 'fake.street_address()',
        '街道名称': 'fake.street_name()',
        '街道后缀名': 'fake.street_suffix()',
        '国家编号': 'fake.country_code(representation="alpha-2")',
    },
    '条形码': {
        'EAN条形码': 'fake.ean(length=13)',
        'EAN13条形码': 'fake.ean13()',
        'EAN8条形码': 'fake.ean8()'
    },
    '汽车': {
        '牌照': 'fake.license_plate()'
    },
    '银行': {
        '银行所属国家': 'fake.bank_country()',
        '基本银行账号': 'fake.bban()',
        '国际银行代码': 'fake.iban()'
    },
    '颜色': {
        '颜色名称': 'fake.color_name()',
        '颜色十六进制值': 'fake.hex_color()',
        '颜色RGB值': 'fake.rgb_color()',
        'CSS颜色值': 'fake.rgb_css_color()',
        '安全色': 'fake.safe_color_name()',
        '安全色十六进制值': 'fake.safe_hex_color()'
    },
    '公司': {
        '商业用词': 'fake.bs()',
        '妙句(口号)': 'fake.catch_phrase()',
        '公司名称': 'fake.company()',
        '公司名称前缀': 'fake.company_prefix()',
        '公司名称后缀': 'fake.company_suffix()',
        '职位': 'fake.job()'
    },
    '信用卡': {
        '过期年月': 'fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y")',
        '完整信用卡信息': 'fake.credit_card_full(card_type=None)',
        '信用卡卡号': 'fake.credit_card_number(card_type=None)',
        '信用卡提供商': 'fake.credit_card_provider(card_type=None)',
        '信用卡安全码': 'fake.credit_card_security_code(card_type=None)'},
    '货币': {
        '加密货币代码+名称': 'fake.cryptocurrency()',
        '加密货币代码': 'fake.cryptocurrency_code()',
        '加密货币名称': 'fake.cryptocurrency_name()',
        '货币代码+名称': 'fake.currency()',
        '货币代码': 'fake.currency_code()',
        '货币名称': 'fake.currency_name()'
    },
    '时间': {
        'AM或PM': 'fake.am_pm()',
        '世纪': 'fake.century()',
        '日期字符串(可设置格式和最大日期)': 'fake.date(pattern="%Y-%m-%d", end_datetime=None)',
        '日期(可设置限定范围)': 'fake.date_between(start_date="-30y", end_date="today")',
        '日期(可设置最大日期)': 'fake.date_object(end_datetime=None)',
        '出生日期': 'fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)',
        '本世纪日期': 'fake.date_this_century(before_today=True, after_today=False)',
        '本年代中的日期': 'fake.date_this_decade(before_today=True, after_today=False)',
        '本月中的日期': 'fake.date_this_month(before_today=True, after_today=False)',
        '本年中的日期': 'fake.date_this_year(before_today=True, after_today=False)',
        '日期和时间': 'fake.date_time(tzinfo=None, end_datetime=None)',
        '日期和时间(从001年1月1日到现在)': 'fake.date_time_ad(tzinfo=None, end_datetime=None, start_datetime=None)',
        '日期时间(可设置限定范围)': 'fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)',
        '本世纪中的日期和时间': 'fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)',
        '本年代中的日期和时间': 'fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)',
        '本月中的日期和时间': 'fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None)',
        '本年中的日期和时间': 'fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None)',
        '几号': 'fake.day_of_month()',
        '星期几': 'fake.day_of_week()',
        '未来日期': 'fake.future_date(end_date="+30d", tzinfo=None)',
        '未来日期和时间': 'fake.future_datetime(end_date="+30d", tzinfo=None)',
        'iso8601格式日期和时间': 'fake.iso8601(tzinfo=None, end_datetime=None)',
        '第几月': 'fake.month()', '月份名称': 'fake.month_name()',
        '过去日期': 'fake.past_date(start_date="-30d", tzinfo=None)',
        '过去日期和时间': 'fake.past_datetime(start_date="-30d", tzinfo=None)',
        '时间(可设置格式和最大日期时间)': 'fake.time(pattern="%H:%M:%S", end_datetime=None)',
        '时间间隔': 'fake.time_delta(end_datetime=None)',
        '时间(可设置最大日期时间)': 'fake.time_object(end_datetime=None)',
        '时区': 'fake.timezone()',
        'UNIX时间戳': 'fake.unix_time(end_datetime=None, start_datetime=None)',
        '某年': 'fake.year()'
    },
    '文件': {
        '文件扩展名': 'fake.file_extension(category=None)',
        '文件名': 'fake.file_name(category=None, extension=None)',
        '文件路径': 'fake.file_path(depth=1, category=None, extension=None)',
        'MIME类型': 'fake.mime_type(category=None)',
        'UNIX设备': 'fake.unix_device(prefix=None)',
        'UNIX分区': 'fake.unix_partition(prefix=None)'
    },
    '坐标': {
        '坐标': 'fake.coordinate(center=None, radius=0.001)',
        '纬度': 'fake.latitude()',
        '经纬度': 'fake.latlng()',
        '返回某个国家某地的经纬度': 'fake.local_latlng(country_code="US", coords_only=False)',
        '返回地球上某个位置的经纬度': 'fake.location_on_land(coords_only=False)',
        '经度': 'fake.longitude()'
    },
    '网络': {
        '企业邮箱(ascii编码)': 'fake.ascii_company_email()',
        '企业邮箱+免费邮箱(ascii编码)': 'fake.ascii_email()',
        '免费邮箱(ascii编码)': 'fake.ascii_free_email()',
        '安全邮箱(ascii编码)': 'fake.ascii_safe_email()',
        '企业邮箱': 'fake.company_email()',
        '域名': 'fake.domain_name(levels=1)',
        '二级域名': 'fake.domain_word()',
        '企业邮箱+免费邮箱': 'fake.email()',
        '免费邮箱': 'fake.free_email()',
        '免费邮箱域名': 'fake.free_email_domain()',
        '主机名': 'fake.hostname()',
        '图片URL': 'fake.image_url(width=None, height=None)',
        'ipv4': 'fake.ipv4(network=False, address_class=None, private=None)',
        'ipv4网络等级': 'fake.ipv4_network_class()',
        '私有ipv4': 'fake.ipv4_private(network=False, address_class=None)',
        '公共ipv4': 'fake.ipv4_public(network=False, address_class=None)',
        'ipv6': 'fake.ipv6(network=False)',
        'MAC地址': 'fake.mac_address()',
        '安全邮箱': 'fake.safe_email()',
        'URL中的slug': 'fake.slug()',
        '顶级域名': 'fake.tld()', 'URI': 'fake.uri()',
        'URI扩展': 'fake.uri_extension()',
        'URI页': 'fake.uri_page()',
        'URI路径': 'fake.uri_path(deep=None)',
        'URL': 'fake.url(schemes=None)',
        '用户名': 'fake.user_name()'
    },
    '图书': {
        'ISBN-10图书编号': 'fake.isbn10(separator="-")',
        'ISBN-13图书编号': 'fake.isbn13(separator="-")'
    },
    '文本': {
        '单个段落': 'fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)',
        '多个段落': 'fake.paragraphs(nb=3, ext_word_list=None)',
        '单个句子': 'fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)',
        '多个句子': 'fake.sentences(nb=3, ext_word_list=None)',
        '单个文本': 'fake.text(max_nb_chars=200, ext_word_list=None)',
        '多个文本': 'fake.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)',
        '单个词语': 'fake.word(ext_word_list=None)',
        '多个词语': 'fake.words(nb=3, ext_word_list=None, unique=False)'
    },
    '电话': {
        '完整手机号码(加了国家和国内区号)': 'fake.msisdn()',
        '手机号': 'fake.phone_number()',
        '区号': 'fake.phonenumber_prefix()'
    },
    '个人档案': {
        '档案(完整)': 'fake.profile(fields=None, sex=None)',
        '档案(简单)': 'fake.simple_profile(sex=None)'},
    '身份证': {
        '身份证号': 'fake.ssn(min_age=18, max_age=90)'
    },
    '用户设备/代理/浏览器等属性': {
        '安卓': 'fake.android_platform_token()',
        'Chrome UA': 'fake.chrome(version_from=13, version_to=63, build_from=800, build_to=899)',
        'FireFox UA': 'fake.firefox()',
        'IE UA': 'fake.internet_explorer()',
        'ios': 'fake.ios_platform_token()',
        'Linux': 'fake.linux_platform_token()',
        'Linux处理器': 'fake.linux_processor()',
        'Mac': 'fake.mac_platform_token()',
        'Mac处理器': 'fake.mac_processor()',
        'Opera UA': 'fake.opera()',
        'Safari UA': 'fake.safari()',
        '随机用户代理': 'fake.user_agent()',
        'Windows': 'fake.windows_platform_token()'
    }
}


实战应用

from faker import Faker

fake = Faker("zh-CN")

for i in range(20):
    name = fake.name()
    company = fake.company()
    job = fake.job()
    id_card = fake.ssn(min_age=18, max_age=60)
    phone = fake.phone_number()
    print('公司:'+ company + ' | 职位:'+ job + ' | 姓名:' + name+ ' | 身份证:' + id_card + ' | 手机号码:' + phone)
    # 公司:双敏电子传媒有限公司 | 职位:服装/纺织设计 | 姓名:张秀云 | 身份证:37068220020912490X | 手机号码:15653550740
    # 公司:天益信息有限公司 | 职位:人事主管 | 姓名:哈瑜 | 身份证:35040019851025128X | 手机号码:13990390364
    # 公司:华远软件传媒有限公司 | 职位:车身/造型设计 | 姓名:左志强 | 身份证:211002197003255493 | 手机号码:15029907380
    # 公司:彩虹科技有限公司 | 职位:杂工 | 姓名:尹志强 | 身份证:331102197910247537 | 手机号码:18980518908
    # 公司:襄樊地球村信息有限公司 | 职位:工业/产品设计 | 姓名:王阳 | 身份证:350503199203140407 | 手机号码:18943392782
    # 公司:海创科技有限公司 | 职位:快递员 | 姓名:高凯 | 身份证:610327197502281140 | 手机号码:15202120026
    # 公司:精芯传媒有限公司 | 职位:其他 | 姓名:彭桂香 | 身份证:210402200410127291 | 手机号码:15040148354
    # 公司:凌颖信息传媒有限公司 | 职位:软件UI设计师/工程师 | 姓名:何磊 | 身份证:410922198310129740 | 手机号码:15343011571
    # 公司:济南亿次元科技有限公司 | 职位:汽车电工 | 姓名:刘丽娟 | 身份证:321183200307106546 | 手机号码:18684057434
    # 公司:易动力网络有限公司 | 职位:网店/淘宝客服 | 姓名:王雪梅 | 身份证:532929199504299906 | 手机号码:15540607021
    # 公司:明腾网络有限公司 | 职位:供应链主管/专员 | 姓名:皮金凤 | 身份证:140108198203263024 | 手机号码:15509985790
    # 公司:凌云网络有限公司 | 职位:后勤 | 姓名:陈芳 | 身份证:320830196403227968 | 手机号码:15900107473
    # 公司:维旺明传媒有限公司 | 职位:合规经理 | 姓名:宋想 | 身份证:44050719870612732X | 手机号码:15051973835
    # 公司:海创信息有限公司 | 职位:储备经理人 | 姓名:张艳 | 身份证:141129197912072974 | 手机号码:18579376434
    # 公司:鑫博腾飞科技有限公司 | 职位:砌筑工 | 姓名:刘超 | 身份证:530425198611079758 | 手机号码:13620924319
    # 公司:七喜信息有限公司 | 职位:电声/音响工程师/技术员 | 姓名:周淑华 | 身份证:51070319771223688X | 手机号码:18027995426
    # 公司:济南亿次元网络有限公司 | 职位:订单处理员 | 姓名:韦雪梅 | 身份证:511527198911210549 | 手机号码:18214660211
    # 公司:新宇龙信息信息有限公司 | 职位:礼仪/迎宾 | 姓名:董丹丹 | 身份证:51050419841205032X | 手机号码:13029593994
    # 公司:联通时科网络有限公司 | 职位:技术总监/经理 | 姓名:胡瑜 | 身份证:210804197501016300 | 手机号码:18848038227
    # 公司:惠派国际公司网络有限公司 | 职位:固废工程师 | 姓名:池娜 | 身份证:620601197303305650 | 手机号码:15138027012

真实代码封装

1.常用数据生成封装
# -*- coding: utf-8 -*-
"""
@WorkNo  : CS4224
@Author  : yangkai
@Email   : yangkai1@dev.bosc
@Project : PythonWorkspace
@Module  : FakerUtils.py
@DateTime: 2024/2/28 12:21
"""

from faker import Faker
import datetime


# 随机姓名
def generate_name1():
    fake = Faker("zh_CN")
    name_list = [fake.name() for _ in range(10)]
    return name_list


# 随机姓名
def generate_name2():
    fake = Faker('zh_CN')
    return fake.name()


# 随机手机号
def generate_phone_number():
    fake = Faker('zh_CN')
    return fake.phone_number()


# 随机身份证
def generate_id_number():
    fake = Faker('zh_CN')
    return fake.ssn(min_age=18, max_age=60)


# 随机银行卡
def generate_card_number():
    fake = Faker('zh_CN')
    return fake.credit_card_number()


# 随机带邮政编码的地址
def generate_addres():
    fake = Faker(locale="zh-CN")
    return fake.address()


# 随机生成公司名称
def generate_company():
    fake = Faker(locale="zh-CN")
    return fake.company()


# 随机生成邮箱
def generate_email():
    fake = Faker(locale="zh-CN")
    return fake.email()


# 获取职称
def generate_job():
    fake = Faker(locale="zh-CN")
    return fake.job()


# 获取省份
def generate_province():
    fake = Faker(locale="zh-CN")
    return fake.province()


# 随机获取城市
def generate_city():
    fake = Faker(locale="zh-CN")
    return fake.city()


# 随机获取国家
def generate_country():
    fake = Faker(locale="zh-CN")
    return fake.country()


# 生成一篇文章
def generate_text():
    fake = Faker(locale="zh-CN")
    return fake.text()


# 生成一个六位随机数
def generate_random_num():
    fake = Faker(locale="zh-CN")
    return fake.random_int(min=000000, max=999999)


# 当前时间年月日
def generate_now_date():
    now_date = (datetime.datetime.now() + datetime.timedelta()).strftime("%Y-%m-%d")
    return now_date


# 当前时间后5天
def generate_date_add():
    date_add = (datetime.datetime.now() + datetime.timedelta(days=5)).strftime("%Y-%m-%d")
    return date_add


# 当前时间年月日时分秒
def generate_ymdhms():
    # ymdhms = time.strftime('%Y-%m-%d %H_%M_%S')
    ymdhms = (datetime.datetime.now() + datetime.timedelta()).strftime("%Y-%m-%d %H_%M_%S")
    return ymdhms


# 自定义年月日格式 年月日 时分秒
def generate_date_time_between():
    fake = Faker(locale="zh-CN")
    return fake.date_time_between(start_date="-3y", end_date="-1y")


# 自定义时间范围,3年前到1年前之间的
def generate_date_between():
    fake = Faker(locale="zh-CN")
    return fake.date_between(start_date="-3y", end_date="-1y")


# 获取未来时间 年月日
def generate_future_date():
    fake = Faker(locale="zh-CN")
    return fake.future_date()


# 获取未来时间,年月日 时分秒
def generate_future_datetime():
    fake = Faker(locale="zh-CN")
    return fake.future_datetime()


# 随机星期几
def generate_week():
    fake = Faker(locale="zh-CN")
    return fake.day_of_week()


# 随机上午下午
def generate_am_pm():
    fake = Faker(locale="zh-CN")
    return fake.am_pm()


if __name__ == '__main__':
    name1 = generate_name1()
    name2 = generate_name2()
    phone_number = generate_phone_number()
    id_number = generate_id_number()
    card_number = generate_card_number()
    address = generate_addres()
    company = generate_company()
    email = generate_email()
    job = generate_job()
    province = generate_province()
    city = generate_city()
    country = generate_country()
    text = generate_text()
    random_num = generate_random_num()
    now_date = generate_now_date()
    date_add = generate_date_add()
    ymdhms = generate_ymdhms()
    date_time_between = generate_date_time_between()
    date_between = generate_date_between()
    future_date = generate_future_date()
    future_datetime = generate_future_datetime()
    week = generate_week()
    am_pm = generate_am_pm()
    print(f'【随机姓名为】:{name1}')
    print(f'【随机姓名为】:{name2}')
    print(f'【随机手机号】:{phone_number}')
    print(f'【随机身份证】:{id_number}')
    print(f'【随机银行卡]: {card_number}')
    print(f'【随机地址】: {address}')
    print(f'【随机公司名称】: {company}')
    print(f'【随机生成邮箱】: {email}')
    print(f'【获取职称】: {job}')
    print(f'【获取省份】: {province}')
    print(f'【随机获取城市】: {city}')
    print(f'【随机获取国家】: {country}')
    print(f'【随机生成文章】: {text}')
    print(f'【生成一个六位随机数】: {random_num}')
    print(f'【当前时间年月日】:{now_date}')
    print(f'【当前时间后5天】:{date_add}')
    print(f'【当前时间年月日时分秒】:{ymdhms}')
    print(f'【自定义年月日格式 年月日 时分秒】: {date_time_between}')
    print(f'【自定义时间范围,3年前到1年前之间的】: {date_between}')
    print(f'【获取未来时间 年月日】: {future_date}')
    print(f'【获取未来时间,年月日 时分秒】:{future_datetime}')
    print(f'【随机星期几】:{week}')
    print(f'【随机上午下午】:{am_pm}')

    # 输出内容如下:
    # 【随机姓名为】:['周建军', '苏莉', '郭淑珍', '石璐', '李杨', '刘丹丹', '陈荣', '张凤兰', '黄洁', '高杰']
    # 【随机姓名为】:李玉华
    # 【随机手机号】:15196465992
    # 【随机身份证】:340400198806249355
    # 【随机银行卡]: 675920649463
    # 【随机地址】: 重庆市雪梅县房山贵阳街J座 126277
    # 【随机公司名称】: 襄樊地球村信息有限公司
    # 【随机生成邮箱】: jun97@example.org
    # 【获取职称】: 营养师
    # 【获取省份】: 江苏省
    # 【随机获取城市】: 六盘水市
    # 【随机获取国家】: 苏里南
    # 【随机生成文章】: 资源积分主要无法提供.不能全部教育威望.
    # 得到那个位置报告.作为同时东西能够处理.这么方法会员方法电脑最大帮助.
    # 要求孩子商品的话质量活动控制一起.为什游戏出来解决.类型关于只是语言.
    # 如此表示方式能够.经营所以北京增加.回复你们完成搜索谢谢.
    # 开始建设完成事情需要看到回复.
    # 报告是一帖子安全专业资源.下载联系女人自己.
    # 的话发展大家.系列没有新闻政府一样大学一切.
    # 【生成一个六位随机数】: 772565
    # 【当前时间年月日】:2024-02-28
    # 【当前时间后5天】:2024-03-04
    # 【当前时间年月日时分秒】:2024-02-28 12_47_51
    # 【自定义年月日格式 年月日 时分秒】: 2022-06-07 05:20:35
    # 【自定义时间范围,3年前到1年前之间的】: 2021-07-16
    # 【获取未来时间 年月日】: 2024-03-15
    # 【获取未来时间,年月日 时分秒】:2024-03-14 02:04:43
    # 【随机星期几】:星期五
    # 【随机上午下午】:PM
2.批量创建数据
from faker import Faker
import pandas as pd
from urllib import parse
from pymongo import MongoClient
import pymysql


class Create_Data(object):
    def __init__(self):
        # 选择中文
        fake = Faker('zh_CN')
        # 生成数据改变循环体来控制数据量rang(?)
        self.data_total = [
            [fake.name(), fake.job(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
             fake.date_time(tzinfo=None)] for x in range(100)] 
        print(self.data_total)

    # 写入excel
    def deal_excel(self):
        df = pd.DataFrame(self.data_total,
                          columns=['name', 'job', 'company', 'phone_number', 'company_email', 'address', 'date_time'])
        # 保存到本地excel
        df.to_excel("data_total.xlsx", index=False)
        print("Processing completed to excel")

    # 写入txt
    def deal_txt(self):
        with open('data_total.txt', 'w', errors='ignore', encoding='utf-8') as output:
            output.write('name,job,company,phone_number.company_email.address.date_time\n')
            for row in self.data_total:
                rowtxt = '{},{},{},{}'.format(row[0], row[1], row[2], row[3])
                output.write(rowtxt)
                output.write('\n')
            output.close()
        print("Processing completed to txt")

    # 写入mongodb
    def deal_mongodb(self):
        port = 27017
        host = 'localhost'
        user_name = 'root'
        db_name = 'data'
        passwd = 'root'
        passwd = parse.quote(passwd)
        mango_uri = 'mongodb://%s:%s@%s:%s/%s' % (user_name, passwd, host, port, db_name)  # 链接时需要指定数据库
        conn = MongoClient(mango_uri)  # 创建链接
        db = conn[db_name]  # 连接coder数据库
        mongodata = db['data_total']
        for val in self.data_total:
            mongodata.insert(
                {"name": val[0], 'job': val[1], 'company': val[2], 'phone_number': val[3], "company_email": val[4],
                 'address': val[5], 'date_time': val[6]})
        print("Processing completed to mongodb")

    # 写入mysql
    def deal_mysql(self):
        # 打开数据库连接
        db = pymysql.connect("localhost", "root", "root", "test2")
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()
        # SQL 插入语句
        for val in self.data_total:
            sql = "insert into data_total(name,job,company,phone_number,company_email,address,date_time)value ('%s','%s','%s','%s','%s','%s','%s')" % (
                val[0], val[1], val[2], val[3], val[4], val[5], val[6])
            try:
                # 执行sql语句
                cursor.execute(sql)
                # 执行sql语句
                db.commit()
                print("insert ok")
            except:
                # 发生错误时回滚
                db.rollback()
            # 关闭数据库连接


if __name__ == '__main__':
    data = Create_Data()
    data.deal_excel()
    data.deal_txt()
    data.deal_mongodb()
    data.deal_mysql()

总结

Python Faker是一个强大的库,可生成各种虚拟数据,适用于开发人员、测试人员和数据分析师
本文概述了其基本用法、功能和应用场景,并提供示例代码,旨在帮助用户更有效地使用Python Faker提高工作效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要休息的KK.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值