当前位置:   article > 正文

使用Faker生成测试数据并写入数据库_faker生成大数据,写入数据库

faker生成大数据,写入数据库
  1. '''
  2. @Version: 1.0
  3. @Autor: ace
  4. @Date: 2020-04-23 12:30:39
  5. @LastEditors: ace
  6. @LastEditTime: 2020-04-26 13:24:25
  7. @Description: 使用Faker生成数据并写入数据库
  8. '''
  9. import pymysql
  10. import threading
  11. from faker import Faker
  12. import time
  13. threads_maximum = 100 # 表数量: 和执行线程数绑定,建议小于150
  14. commit_maximum = 500 # 每次提交数据量
  15. table_name = "stu" # 表名
  16. data_size = 100000 # 每张表插入数据量
  17. fake = Faker("zh-CN")
  18. def creat_data(num):
  19. conn = pymysql.connect(host="127.0.0.1", port=3306,
  20. user="root", password="root", db="test", charset="utf8")
  21. cursor = conn.cursor()
  22. # 这里给出表结构,如果使用已存在的表,可以不创建表。
  23. sql = """
  24. create table %s%s (
  25. id int unsigned auto_increment primary key COMMENT '自增id',
  26. company varchar(40) not null comment '公司名称',
  27. city_name varchar(64) comment '城市',
  28. street_name varchar(64) comment '街道',
  29. street_address varchar(64) comment '街道地址',
  30. postcode varchar(64) comment '邮政编码',
  31. ipv4 varchar(20) not null comment 'ipv4',
  32. password varchar(64) comment '密码'
  33. ) engine=InnoDB default charset=utf8;
  34. """ % (table_name, num)
  35. cursor.execute(sql)
  36. for i in range(1, 10001):
  37. sql = """insert into information%s(company, city_name, street_name, street_address, postcode, ipv4, password)
  38. values('%s', '%s', '%s', '%s', '%s', '%s', '%s')""" % (table_name, num, fake.company(), fake.city_name(), fake.street_name(), fake.street_address(), fake.postcode(), fake.ipv4(), fake.md5(raw_output=False))
  39. cursor.execute(sql)
  40. if(i % commit_maximum == 0):
  41. conn.commit()
  42. conn.commit()
  43. cursor.close()
  44. conn.close()
  45. if __name__ == "__main__":
  46. start_time = time.time()
  47. threads = []
  48. for i in range(threads_maximum):
  49. threads.append(threading.Thread(target=creat_data, args=(i,)))
  50. for t in threads:
  51. t.setDaemon(True)
  52. t.start()
  53. for t in threads:
  54. t.join()
  55. end_time = time.time()
  56. print(f"程序执行完成,耗时{end_time-start_time}秒")

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/927171
推荐阅读
相关标签
  

闽ICP备14008679号