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]
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)
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)
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)
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)
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)