示例#1
0
 def generate_address(self):
     """
     产生地址
     :return:
     """
     name = rand.astring(config.MIN_NAME, config.MAX_NAME)
     street1 = rand.astring(config.MIN_STREET, config.MAX_STREET)
     street2 = rand.astring(config.MIN_STREET, config.MAX_STREET)
     city = rand.astring(config.MIN_CITY, config.MAX_CITY)
     state = rand.astring(config.STATE, config.STATE)
     add_zip = self.generate_zip()
     return [name, street1, street2, city, state, add_zip]
示例#2
0
    def load_order_line(self, ol_w_id, ol_d_id, ol_o_id, ol_number, max_items,
                        new_order):
        ol_i_id = rand.number(1, max_items)
        ol_supply_w_id = ol_w_id
        ol_delivery_d = datetime.now()
        ol_quantity = config.INITIAL_QUANTITY

        # 1% of items are from a remote warehouse
        remote = (rand.number(1, 100) == 1)
        if remote:
            if ol_w_id == 1:
                ol_supply_w_id = 1
            else:
                ol_supply_w_id = rand.numberExcluding(1, ol_w_id, ol_w_id)

        if not new_order:
            ol_amount = 0.00
        else:
            ol_amount = rand.fixedPoint(
                config.MONEY_DECIMALS, config.MIN_AMOUNT,
                config.MAX_PRICE * config.MAX_OL_QUANTITY)
            # ol_delivery_d = None
        ol_dist_info = rand.astring(config.S_DIST, config.S_DIST)

        ol_detail = [
            ol_o_id, ol_d_id, ol_w_id, ol_number, ol_i_id, ol_supply_w_id,
            ol_delivery_d, ol_quantity, ol_amount, ol_dist_info
        ]
        self.driver.insert(config.TABLE_NAME_ORDER_LINE, ol_detail)
示例#3
0
    def load_item(self, item_id: int):
        """
        向数据库中插入1条item_id的item,其中有10%的概率i-data为ORIGINAL。

        :param item_id: item的ID
        """
        i_id = item_id
        i_im_id = rand.number(config.MIN_IM, config.MAX_IM)
        i_name = rand.astring(config.MIN_I_NAME, config.MAX_I_NAME)
        i_price = rand.fixedPoint(config.MONEY_DECIMALS, config.MIN_PRICE,
                                  config.MAX_PRICE)
        i_data = rand.astring(config.MIN_I_DATA, config.MAX_I_DATA)
        # Select 10% of the rows to be marked "original"
        if rand.rand_bool(config.I_ORIGINAL_RATE):
            i_data = self.generate_original_string(i_data)
        item_detail = [i_id, i_im_id, i_name, i_price, i_data]
        self.driver.insert(config.TABLE_NAME_ITEM, item_detail)
示例#4
0
    def load_stock(self, s_w_id: int, s_i_id: int):
        """
        插入一条 Stock

        :param s_w_id: warehouse-ID
        :param s_i_id: Item_ID
        """
        s_quantity = rand.number(config.S_MIN_QUANTITY, config.S_MAX_QUANTITY)
        s_ytd = 0
        s_order_cnt = 0
        s_remote_cnt = 0
        s_data = rand.astring(config.MIN_I_DATA, config.MAX_I_DATA)

        # Select 10% of the stock to be marked "original"
        if rand.rand_bool(config.S_ORIGINAL_RATE):
            s_data = self.generate_original_string(s_data)

        s_dists = []
        for i in range(0, config.DIST_PER_WARE):
            s_dists.append(rand.astring(config.S_DIST, config.S_DIST))

        s_detail = [s_i_id, s_w_id, s_quantity
                    ] + s_dists + [s_ytd, s_order_cnt, s_remote_cnt, s_data]
        self.driver.insert(config.TABLE_NAME_STOCK, s_detail)
示例#5
0
    def load_history(self, h_c_w_id: int, h_c_d_id: int, h_c_id: int):
        """
        插入一条 History

        :param h_c_w_id: warehouse-ID
        :param h_c_d_id: district-ID
        :param h_c_id: customer-ID
        """
        h_w_id = h_c_w_id
        h_d_id = h_c_d_id
        h_date = datetime.now()
        h_amount = config.H_INITIAL_AMOUNT
        h_data = rand.astring(config.H_MIN_DATA, config.H_MAX_DATA)
        h_detail = [
            h_c_id, h_c_d_id, h_c_w_id, h_d_id, h_w_id, h_date, h_amount,
            h_data
        ]
        self.driver.insert(config.TABLE_NAME_HISTORY, h_detail)
示例#6
0
    def load_customer(self, c_w_id: int, c_d_id: int, c_id: int):
        """
        插入一条 Customer

        :param c_w_id: WarehouseID of Customer
        :param c_d_id: DistrictID of Customer
        :param c_id: CustomerID
        """
        c_first = rand.astring(config.MIN_FIRST, config.MAX_FIRST)
        c_middle = config.MIDDLE
        # 一部分是随机,一部分是伪随机
        if c_id <= 1000:
            c_last = rand.makeLastName(c_id - 1)
        else:
            c_last = rand.makeRandomLastName(config.CUSTOMERS_PER_DISTRICT)
        # 详细信息
        c_phone = rand.nstring(config.PHONE, config.PHONE)
        c_since = datetime.now()
        c_credit = config.BAD_CREDIT if rand.rand_bool(
            config.C_BAD_CREDIT_RATE) else config.GOOD_CREDIT
        c_credit_lim = config.INITIAL_CREDIT_LIM
        c_discount = rand.fixedPoint(config.DISCOUNT_DECIMALS,
                                     config.MIN_DISCOUNT, config.MAX_DISCOUNT)
        c_balance = config.INITIAL_BALANCE
        c_ytd_payment = config.INITIAL_YTD_PAYMENT
        c_payment_cnt = config.INITIAL_PAYMENT_CNT
        c_delivery_cnt = config.INITIAL_DELIVERY_CNT
        c_data = rand.astring(config.MIN_C_DATA, config.MAX_C_DATA)
        # 地址信息
        c_street1 = rand.astring(config.MIN_STREET, config.MAX_STREET)
        c_street2 = rand.astring(config.MIN_STREET, config.MAX_STREET)
        c_city = rand.astring(config.MIN_CITY, config.MAX_CITY)
        c_state = rand.astring(config.STATE, config.STATE)
        c_zip = self.generate_zip()
        # 生成并插入
        c_detail = [
            c_id, c_d_id, c_w_id, c_first, c_middle, c_last, c_street1,
            c_street2, c_city, c_state, c_zip, c_phone, c_since, c_credit,
            c_credit_lim, c_discount, c_balance, c_ytd_payment, c_payment_cnt,
            c_delivery_cnt, c_data
        ]
        self.driver.insert(config.TABLE_NAME_CUSTOMER, c_detail)