def commit(self): self.commit_collection(self.batters, Batter) self.commit_collection(self.pitchers, Pitcher) self.commit_collection(self.teams, Team) session.add_all(self.events) session.add_all(self.games) session.commit()
def evaluate(self): batters = session.query(Batter).all() game_results = list() for batter in batters: batter_results = self.get_batter_results(batter) game_results.extend(batter_results) if len(game_results) > constants.batch_size: session.add_all(game_results) game_results = list() session.add_all(game_results) session.commit()
def write_user_info(self, table: str) -> Optional[int]: """ Пишет данные пользователя в таблицу vkinder_user если на вход передан параметр 'vkinder_user' Пишет данные найденных методом search_user пользователей в таблицу search_result если передан параметр 'search_result' """ # выбираем необходимые поля таблицы для последующей записи: table_columns = list( filter(lambda x: not x.startswith('_') and x != 'id', VKinderUser.__dict__)) # запись информации о пользователе в таблицу vkinder_user: if table == 'vkinder_user': # формируем словарь с данными для записи в таблицу vkinder_user: write_data = dict( zip(table_columns, self.user_info.__dict__.values())) add_record = VKinderUser(**write_data) session.add(add_record) session.commit() self.id_User = session.query(VKinderUser.id).filter( VKinderUser.vk_id == self.vk_id).first()[0] # возвращаем идентификатор пользователя из таблицы vkinder_user return self.id_User # запись информации о пользователях, полученных в результате метода search_user, в таблицу search_result: elif table == 'search_result': # список всех vk_id из таблицы search_result: existing_ids = session.query(SearchResult.vk_id).filter( SearchResult.id_User == self.id_User).all() existing_ids = list(map(lambda x: x[0], existing_ids)) search_result = self.search_user() write_data = [] for user in search_result: # если пользователь с таким vk_id уже есть в таблице, переходим на следующую итерацию: if user.vk_id in existing_ids: continue else: user_info = dict(zip(table_columns, user.__dict__.values())) # рарсширяем словарь с данными для записи в search_result: user_info.update({ 'id_User': self.id_User, 'search_date': datetime.datetime.today() }) write_data.append(SearchResult(**user_info)) session.add_all(write_data) session.commit()
def __evaluate_matrix(self, matrix): global event_data global batters if event_data is None: event_data = session.query(Event).all() if batters is None: batters = session.query(Batter).all() calculator = self.__get_calculator(matrix) game_results = list() for batter in batters: batter_results = self.get_batter_results(matrix, calculator, batter) game_results.extend(batter_results) if len(game_results) > constants.batch_size: session.add_all(game_results) game_results = list() session.add_all(game_results) session.commit()
def commit_collection(self, collection, claz): db_bat = session.query(claz).all() ids = set([x.mlb_id for x in db_bat]) filtered_collection = filter(lambda x: x.mlb_id not in ids, collection) session.add_all(filtered_collection) session.commit()
unique_links = set() site_url = 'http://register.start.bg' site_response = requests.get(site_url) servers[site_response.headers['Server']] = 1 bs = BeautifulSoup(site_response.content) for link in bs.find_all('a'): unique_links.add(link.get('href')) # read links servers for link in unique_links: try: if link.startswith("http"): site_response = requests.get(site_url, verify=False) else: url = site_url + '/' + link site_response = requests.get(url, verify=False) if 'Server' not in site_response.headers: continue site_server = site_response.headers['Server'] if site_server not in servers: servers[site_server] = 0 servers[site_server] += 1 except Exception: continue to_add: [Server] = [] for serv, occ in servers.items(): to_add.append(Server(server_name=serv, occurences=occ)) session.add_all(to_add) session.commit()