Exemplo n.º 1
0
def player_ranking():
    if db_session.query(PlayerRanking).count() >= db_session.query(ipd.Player).count():
        return
    ### travers all players
    i = 0
    players = ipd.db_session.query(ipd.Player).all()
    for player in players:
        i += 1
        if i%100 == 0:
            db_session.commit()
        p = db_session.query(PlayerRanking).filter(PlayerRanking.player_id==player.id).first()
        if p:
            print(p.__repr__())
            continue
        total_pay = 0
        total_win = 0
        round_num = 0
        rounds = ipd.db_session.query(ipd.Round).filter(ipd.Round.player_id==player.id).all()
        for round in rounds:
            total_pay += round.pay
            total_win += round.win
            round_num += 1
        average_points = (total_win-total_pay)/round_num
        player_ranking = PlayerRanking(player_id=player.id, 
                                        player_name=player.player_name, 
                                        average_points=average_points,
                                        total_pay=total_pay,
                                        total_win=total_win,
                                        round_num=round_num)
        print(player_ranking.__repr__())
        db_session.add(player_ranking)
    db_session.commit()
Exemplo n.º 2
0
 def round_data_clean(self):
     db_session.query(Round).filter(Round.player_num > 12).delete()
     db_session.query(Round).filter(Round.player_num < 2).delete()
     db_session.query(Round).filter(~Round.card_1.in_(self.poker_cards)
                                    ).delete(synchronize_session=False)
     db_session.query(Round).filter(~Round.card_2.in_(self.poker_cards)
                                    ).delete(synchronize_session=False)
     db_session.commit()
Exemplo n.º 3
0
 def pot_data_clean(self):
     db_session.query(Pot).filter(Pot.player_num > 12).delete()
     db_session.query(Pot).filter(Pot.player_num < 2).delete()
     db_session.query(Pot).filter(~Pot.card_1.in_(self.poker_cards)).delete(
         synchronize_session=False)
     db_session.query(Pot).filter(~Pot.card_2.in_(self.poker_cards)).delete(
         synchronize_session=False)
     db_session.query(Pot).filter(~Pot.card_3.in_(self.poker_cards)).delete(
         synchronize_session=False)
     db_session.query(Pot).filter(~Pot.card_4.in_(self.poker_cards)).delete(
         synchronize_session=False)
     db_session.query(Pot).filter(~Pot.card_5.in_(self.poker_cards)).delete(
         synchronize_session=False)
     db_session.commit()
Exemplo n.º 4
0
    def parse_roster(self, month_data_root, roster_records_errors):
        filename = month_data_root + '/hroster'
        if not os.path.exists(filename):
            return
        flush_count = 0
        with open(filename) as data_file:
            # load self.player_name_id_map in memory
            if len(self.player_name_id_map) == 0:
                player_records = db_session.query(Player).all()
                for player_rec in player_records:
                    self.player_name_id_map[
                        player_rec.player_name] = player_rec.id
                    # print('{name}-{id}'.format(name=player_rec.player_name, id=str(player_rec.id)))
                print('Make player name-id mapping... {counts} items'.format(
                    counts=len(self.player_name_id_map)))

            for line in data_file:
                try:
                    roster_raw = line.split()
                    the_round = {}
                    the_round['round_id'] = roster_raw[0]
                    the_round['player_num'] = int(roster_raw[1])
                    the_round['players'] = []
                    for i in range(2, len(roster_raw)):
                        the_round['players'].append(roster_raw[i])
                except:
                    roster_records_errors.append(
                        '{filename} except'.format(filename=filename))
                else:
                    # print(the_round)
                    for player_name in the_round['players']:
                        # roster_data = db_session.query(Roster).filter(Roster.round_id==the_round['round_id']).filter(Roster.player_id==self.player_name_id_map[player_name]).first()
                        roster_data = None
                        if roster_data is None and player_name in self.player_name_id_map:
                            print(
                                'Adding {filename}-{round_id}-{player_name}...'
                                .format(filename=filename,
                                        round_id=the_round['round_id'],
                                        player_name=player_name))
                            roster_data = Roster(
                                round_id=the_round['round_id'],
                                player_num=the_round['player_num'],
                                player_id=self.player_name_id_map[player_name])
                            db_session.add(roster_data)
                            flush_count += 1
                            if flush_count % 1000 == 0:
                                db_session.commit()
                        else:
                            roster_records_errors.append(
                                '{filename} except'.format(filename=filename))
Exemplo n.º 5
0
 def traverse_records(self, parser):
     holdems = [
         '/../data/holdem/', '/../data/holdem1/', '/../data/holdem2/',
         '/../data/holdem3/', '/../data/holdemii/', '/../data/holdempot/'
     ]
     error_records = []
     for h in holdems:
         holdem = '{basedir}{h}'.format(basedir=basedir, h=h)
         print('Opening {holdem}...'.format(holdem=holdem))
         monthly_records = util_file.get_sub_folder_list(holdem)
         for month_data in monthly_records:
             month_data_root = holdem + month_data
             print('Parsing {month_data_root}...').format(
                 month_data_root=month_data_root)
             parser(month_data_root, error_records)
         db_session.commit()
     print('Traverse record errors: {error_counts}'.format(
         error_counts=len(error_records)))
     for error_msg in error_records:
         print('!!!EXCEPT {msg}'.format(msg=error_msg))
Exemplo n.º 6
0
 def roster_data_clean(self):
     db_session.query(Roster).filter(Roster.player_num > 12).delete()
     db_session.query(Roster).filter(Roster.player_num < 2).delete()
     db_session.commit()