• python向dbf表格写入数据


    最近性能测试需要造大量dbf表格数据,将简洁易懂的代码分享于诸君~

    这是需要造的目标数据,第一个字段BMH要求自增1,XM也是如此,XBM和SFZJLXM在一个list范围内随机取值,其余字段不变,要生成这样的dbf表格数据,请看下面代码详解~

    import dbf,datetime
    import random
    import os, time
    from multiprocessing import Pool



    def add_bpm(num, HKSZDM):
    table = dbf.Table(
    filename='test',
    field_specs='BMH C(20);XM C(10);XBM C(2);SFZJLXM C(2);'
    'SFZJHM C(18);CSRQ C(8);MZM C(2);HKSZDM C(8);'
    'ZP C(100)',
    on_disk=False,
    )
    table.open(mode=dbf.READ_WRITE)
    list = [1, 2, 3, 4, 'A', 'B', 'Z', 5, 6, 7, 8, 9]
    list2 = ['01', '02', '03', '04', '05', '06', '55', '56', '97', '98', '23']
    list_bp = ['3601021234501', '李考生一', '1', '1', '360102199904230123']
    b = []
    #num表示行数,要循环造多少行这样的数据
    for i in range(1,num+1):
    list_bp[0] = str(HKSZDM) + str(1234501 + i) # BMH
    list_bp[1] = "xm" + str(i) # XM
    list_bp[2] = str(random.randint(1, 2)) # XBM
    list_bp[3] = str(random.sample(list, 1)[0]) # SFZJLXM
    list_bp[6] = str(random.sample(list2, 1)[0]) # MZM
    list_bp[7] = str(HKSZDM) # HKSZDM

    b.append(tuple(list_bp))

    for datum in tuple(b):
    table.append(datum)

    custom = table.new(
    filename=r'导入模板1.dbf',
    default_data_types=dict(C=dbf.Char, D=dbf.Date, L=dbf.Logical),
    )

    with custom:
    for record in table:
    custom.append(record)

    table.close()


    def main():
      #cpu密集型任务采用多进程
    startime = datetime.datetime.now()
    print("主进程开始执行>>> pid={}".format(os.getpid()))
    ps = Pool(4)
    # ps.apply(add_bpm,args=(i,)) # 同步执行
       #一个dbf要造160000行数据
    ps.apply_async(add_bpm(160000, 220102), args=()) # 异步执行

    # 关闭进程池,停止接受其它进程
    ps.close()
    # 阻塞进程
    ps.join()
    print("主进程终止")
    endtime = datetime.datetime.now()
    print("共耗时:{0}".format(endtime-startime))

    if __name__ == '__main__':
    main()

     亲测运行无误~

  • 相关阅读:
    在Oracle中添加用户 赋权 修改暗码 解锁
    Ubuntu Linux 8.04 Vsftp 假造用户设置
    用一个实例讲解DB2数据库游标轮回的成果
    解说Oracle数据库自动增长列的完成过程
    MSN登录错误“80072efd”解决办法
    再学 GDI+[61]: 路径画刷(1) SetCenterColor、SetSurroundColors
    WinAPI: 测试 BitBlt
    两个 CopyRect
    再学 GDI+[58]: 路径 保存与读取路径数据
    再学 GDI+[62]: 路径画刷(2) SetCenterPoint、GetCenterPoint
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/15698869.html
Copyright © 2020-2023  润新知