def __init__(self, dbname, **keyword): """load init """ self._func = {} self.dbname = dbname self.keyword = keyword self.Analy = SourceToAnalysis()[dbname] self.point = query(dbname, filter='', limit=100) self.query_retry = 0 self.max_query_retry = 10 func_name = 'to_%s' if keyword.get('UPDATE') == True: if isinstance(self.Analy.get('Update'), dict): self.Analy = self.Analy['Update'] else: self.Analy['From'] = self.Analy['To'] func_name = 'to_update_%s' elif keyword.get('EDIT') == True: if isinstance(self.Analy.get('Edit'), dict): self.Analy = self.Analy['Edit'] func_name = 'to_edit_%s' elif keyword.get('QUERY') == True: if isinstance(self.Analy.get('Query'), dict): sefl.Analy = self.Analy['Query'] else: self.Analy['From'] = self.Analy['To'] func_name = 'to_query_%s' for todat in self.Analy['To']: self._func[todat.__name__] = getattr( self, func_name % todat.__name__)
class Process(object): """Process""" def __init__(self, dbname, **keyword): """load init """ self._func = {} self.dbname = dbname self.keyword = keyword self.Analy = SourceToAnalysis()[dbname] self.point = query(dbname, filter='', limit=100) self.query_retry = 0 self.max_query_retry = 10 func_name = 'to_%s' if keyword.get('UPDATE') == True: if isinstance(self.Analy.get('Update'), dict): self.Analy = self.Analy['Update'] else: self.Analy['From'] = self.Analy['To'] func_name = 'to_update_%s' elif keyword.get('EDIT') == True: if isinstance(self.Analy.get('Edit'), dict): self.Analy = self.Analy['Edit'] func_name = 'to_edit_%s' elif keyword.get('QUERY') == True: if isinstance(self.Analy.get('Query'), dict): sefl.Analy = self.Analy['Query'] else: self.Analy['From'] = self.Analy['To'] func_name = 'to_query_%s' for todat in self.Analy['To']: self._func[todat.__name__] = getattr( self, func_name % todat.__name__) def set_default_point(self): self.point = query(self.dbname, filter='', limit=100) def works(self): """Create work list """ count = {} index = {} for base in self.Analy['From']: count[base.__name__] = [] index[base.__name__] = [] # self.point.set_tablename(tablename=base.id) #import pdb # pdb.set_trace() if self.keyword.has_key('filter'): self.point.set_filter(self.keyword['filter'], limit=None) else: self.point.set_filter('', limit=None) self.point.session_status() try: result = self.point.session.execute( 'select id from %s where %s' % (base.__name__, self.keyword['filter'])).fetchall() except SqlQuery_TimeOut: self.point.session.close() if self.query_retry < self.max_query_retry: time.sleep(1) self.works() self.query_retry += 1 else: raise OperationalError, "query time Out" self.query_retry = 0 self.point.session.close() for item in result: # self.point.query(): count[base.__name__].append(item) for item in count: index[item].extend([count[item][i:i + 50] for i in range(0, len(count[item]), 50)]) return index def runing_works(self): data = self.works() if not data: return run = Runing( data, self._func, self.point, self.Analy['From'], self.Analy['To']) run.run()