Exemplo n.º 1
0
def insert_batch(num, clean=True, average_iteration_num=1):
    sum_time = 0.0
    for i in range(0, average_iteration_num):

        ## 接下来的三行代码从旧的总表中获取想要的数目的数据,作为之后插入的数据源,其实也可以读文件得到,但是那就太麻烦了
        old_session = EngineFactory.create_session_to_databackup_so(echo=False)
        test_session = EngineFactory.create_session_to_test_so(echo=False)
        old_post_list = old_session.query(PostsRecord).limit(num)

        starttime = datetime.datetime.now()

        for post in old_post_list:
            test_session.add(post.make_copy())

        ## 全部写入缓存再一次性commit写入数据库

        test_session.commit()
        endtime = datetime.datetime.now()

        time = (endtime - starttime).total_seconds()
        print("test_insert_batch num={num} time={time}".format(num=num,
                                                               time=time))
        if clean:
            PostsRecord.delete_all(test_session)
        sum_time = sum_time + time

    return {
        "type": "insert batch",
        "num": num,
        "time": sum_time / average_iteration_num
    }
Exemplo n.º 2
0
def insert_separate(num, clean=True, average_iteration_num=1):
    sum_time = 0.0
    for i in range(0, average_iteration_num):

        old_session = EngineFactory.create_session_to_databackup_so(echo=False)
        test_session = EngineFactory.create_session_to_test_so(echo=False)

        old_post_list = old_session.query(PostsRecord).limit(num)

        starttime = datetime.datetime.now()

        for post in old_post_list:
            test_session.add(post.make_copy())
            ## 每插入一条就commit写入数据库
            test_session.commit()

        endtime = datetime.datetime.now()
        time = (endtime - starttime).total_seconds()
        print("test_insert_separate num={num} time={time}".format(num=num,
                                                                  time=time))
        if clean:
            PostsRecord.delete_all(test_session)
        sum_time = sum_time + time
    return {
        "type": "insert separate",
        "num": num,
        "time": sum_time / average_iteration_num
    }
Exemplo n.º 3
0
def create_post_test_data_in_test_db(num):
    """
    利用全表服务器在测试服务器上创建新的数据,这个创建得是用户表得测试数据
    :param num: 要取得测试数据得数目
    :return:
    """
    ## 接下来的三行代码从旧的总表中获取想要的数目的数据,作为之后插入的数据源,其实也可以读文件得到,但是那就太麻烦了
    old_session = EngineFactory.create_session_to_databackup_so(echo=False)
    new_session = EngineFactory.create_session_to_test_so(echo=False)
    old_post_list = old_session.query(PostsRecord).limit(num)
    count = 0
    for post in old_post_list:
        new_session.add(post.make_copy())
        count = count + 1
        if count >= 100000:
            new_session.commit()
            count = 0
    new_session.commit()