python 利用 Faker 生成测试数据
2022/4/27 12:12:43
本文主要是介绍python 利用 Faker 生成测试数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# -*- coding:utf-8 -*- import time from concurrent.futures import ThreadPoolExecutor import pymysql from faker import Faker import sys from dbUntils.mysql_DBUtils import MyPymysqlPool import importlib importlib.reload(sys) fake2 = Faker(locale='ZH_CN') # 简体中文:zh_CN # 繁体中文:zh_TW # 美国英文:en_US # 英国英文:en_GB # 德文:de_DE # 日文:ja_JP # 韩文:ko_KR # 法文:fr_FR # 定义DB mysql = MyPymysqlPool("dbMysql") base_sql = """INSERT INTO people_infomation( name, phone, snnCard, company, address, barcode) VALUES {values};""" # 拼接SQL字符串,方法一 def sing(base_sql, params): params = tuple(['null' if param is None else param for param in params]) format = ",".join(["'%s'"] * len(params)) format = "({})".format(format % params) base_sql = base_sql.format(values=format) return base_sql # 拼接SQL字符串,方法二 def multi(base_sql, datas): multiParams = [] for params in datas: params = tuple(['null' if param is None else param for param in params]) format = ",".join(["'%s'"] * len(params)) format = "({})".format(format % params) multiParams.append(format) return base_sql.format(values=",".join(multiParams)) def insetrDate(sql): # 打开数据库连接 # db = pymysql.connect(host="127.0.0.1", user="root", password="123", db="order_dev", # port=3306) db = pymysql.connect(host="139.198.180.175", user="root", password="123", db="order_dev", port=3306) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # sqll = "SELECT code,totalQty FROM shipment_header WHERE warehouseCode='%s'" % ('01') # sqll = """ SELECT DISTINCT attribute5 as 'ljc' FROM location_inventory """ # 使用 execute() 方法执行 SQL 查询 cursor.execute(sql) cursor.close() db.commit() db.close() def instertMqlPool(sql): time.sleep(10) mysql.insert(sql) def sqlParam(): value_sql = [] value_sql.append(fake2.name()) value_sql.append(fake2.phone_number()) value_sql.append(fake2.ssn()) value_sql.append(fake2.company()) value_sql.append(fake2.address()) value_sql.append(fake2.ean13()) return value_sql if __name__ == '__main__': sqlParams = [] sqlParamLists = [] for i in range(1, 100001): sqlParams.append(sqlParam()) if i % 100 == 0: sql = multi(base_sql, sqlParams) print(sql) sqlParamLists.append(sql) sqlParams = [] # print(sqlParamLists) # 开启10个线程 with ThreadPoolExecutor(10) as threadPool: for sqlParamList in sqlParamLists: threadPool.submit(instertMqlPool, sqlParamList) # insetrDate(sqlParamList) ### 常用函数 # 1、地理信息类 # fake.city_suffix():市,县 # fake.country():国家 # fake.country_code():国家编码 # fake.district():区 # fake.geo_coordinate():地理坐标 # fake.latitude():地理坐标(纬度) # fake.longitude():地理坐标(经度) # fake.postcode():邮编 # fake.province():省份 # fake.address():详细地址 # fake.street_address():街道地址 # fake.street_name():街道名 # fake.street_suffix():街、路 # 2、基础信息类 # ssn():生成身份证号 # bs():随机公司服务名 # company():随机公司名(长) # company_prefix():随机公司名(短) # company_suffix():公司性质 # credit_card_expire():随机信用卡到期日 # credit_card_full():生成完整信用卡信息 # credit_card_number():信用卡号 # credit_card_provider():信用卡类型 # credit_card_security_code():信用卡安全码 # job():随机职位 # first_name_female():女性名 # first_name_male():男性名 # last_name_female():女姓 # last_name_male():男姓 # name():随机生成全名 # name_female():男性全名 # name_male():女性全名 # phone_number():随机生成手机号 # phonenumber_prefix():随机生成手机号段 # 3、计算机基础、Internet信息类 # ascii_company_email():随机ASCII公司邮箱名 # ascii_email():随机ASCII邮箱: # company_email(): # email(): # safe_email():安全邮箱 # 4、网络基础信息类 # domain_name():生成域名 # domain_word():域词(即,不包含后缀) # ipv4():随机IP4地址 # ipv6():随机IP6地址 # mac_address():随机MAC地址 # tld():网址域名后缀(.com,.net.cn,等等,不包括.) # uri():随机URI地址 # uri_extension():网址文件后缀 # uri_page():网址文件(不包含后缀) # uri_path():网址文件路径(不包含文件名) # url():随机URL地址 # user_name():随机用户名 # image_url():随机URL地址 # 5、浏览器信息类 # chrome():随机生成Chrome的浏览器user_agent信息 # firefox():随机生成FireFox的浏览器user_agent信息 # internet_explorer():随机生成IE的浏览器user_agent信息 # opera():随机生成Opera的浏览器user_agent信息 # safari():随机生成Safari的浏览器user_agent信息 # linux_platform_token():随机Linux信息 # user_agent():随机user_agent信息 # 6、数字类 # numerify():三位随机数字 # random_digit():0~9随机数 # random_digit_not_null():1~9的随机数 # random_int():随机数字,默认0~9999,可以通过设置min,max来设置 # random_number():随机数字,参数digits设置生成的数字位数 # pyfloat(): # left_digits=5 #生成的整数位数, right_digits=2 #生成的小数位数, positive=True #是否只有正数 # pyint():随机Int数字(参考random_int()参数) # pydecimal():随机Decimal数字(参考pyfloat参数) # 7、文本、加密类 # pystr():随机字符串 # random_element():随机字母 # random_letter():随机字母 # paragraph():随机生成一个段落 # paragraphs():随机生成多个段落 # sentence():随机生成一句话 # sentences():随机生成多句话,与段落类似 # text():随机生成一篇文章 # word():随机生成词语 # words():随机生成多个词语,用法与段落,句子,类似 # binary():随机生成二进制编码 # boolean():True/False # language_code():随机生成两位语言编码 # locale():随机生成语言/国际 信息 # md5():随机生成MD5 # null_boolean():NULL/True/False # password():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母 # sha1():随机SHA1 # sha256():随机SHA256 # uuid4():随机UUID # 8、时间信息类 # date():随机日期 # date_between():随机生成指定范围内日期,参数:start_date,end_date # date_between_dates():随机生成指定范围内日期,用法同上 # date_object():随机生产从1970-1-1到指定日期的随机日期。 # date_time():随机生成指定时间(1970年1月1日至今) # date_time_ad():生成公元1年到现在的随机时间 # date_time_between():用法同dates # future_date():未来日期 # future_datetime():未来时间 # month():随机月份 # month_name():随机月份(英文) # past_date():随机生成已经过去的日期 # past_datetime():随机生成已经过去的时间 # time():随机24小时时间 # timedelta():随机获取时间差 # time_object():随机24小时时间,time对象 # time_series():随机TimeSeries对象 # timezone():随机时区 # unix_time():随机Unix时间 # year():随机年份 # 9、python 相关方法 # profile():随机生成档案信息 # simple_profile():随机生成简单档案信息 # pyiterable() # pylist() # pyset() # pystruct() # pytuple() # pydict() # 可以用dir(fake),看Faker库都可以fake哪些数据,目前Faker支持近300种数据,此外还支持自己进行扩展。
这篇关于python 利用 Faker 生成测试数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程