def getMiniFeeds_FromDB ( feedids ): if len( feedids ) <= 0 : return {} db = db_cache.getdb() if db == None: # error logging in db_cache return None result = {} strFeedIds = '' for feedid in feedids : if feedid == '' : continue if strFeedIds != '' : strFeedIds += ',' strFeedIds += '\'' + feedid + '\'' logger.debug( 'getMiniFeeds_FromDB, ids=(%s)', strFeedIds ) try: rs = db.query( 'select feed_id, jsonstr from feed where feed_id in (%s)' % strFeedIds ) #print 'select feed_id, jsonstr from feed where feed_id in (%s)' % strFeedIds for rd in rs : result[rd[0]] = rd[1] updateMiniFeed_ToCache( rd[0], rd[1] ) return result except: logger.error( 'getMiniFeeds_FromDB faild, %s', str(sys.exc_info()) ) return None
def addSubscription ( self ): # 插入记录到数据库 db = db_cache.getdb() if db == None : return ( 1, 'db error' ) try: sql ="INSERT INTO subscription(`user_id`, `feed_id`, `resource_id`, `last_modify_time`, `insert_time`) VALUES(%s, %s, %s, NOW(), NOW());" db.execute(sql, (self.uid, self.feedid, self.resid)) except MySQLdb.Error,e: if e.args[0] != 1062 : logger.error( "insert subscription faild, %s, %s" ,sys.exc_info()[0] , sys.exc_info()[1] ) return ( 2, 'insert record faild')
def delSubscription ( self ): # 删除记录到数据库 db = db_cache.getdb() if db == None : return ( 1, 'db error' ) try: sql ="DELETE FROM subscription where user_id=%s and feed_id=%s and resource_id=%s" db.execute(sql, (self.uid, self.feedid, self.resid)) except: logger.error( "del subscription faild, %s, %s" ,sys.exc_info()[0] , sys.exc_info()[1] ) return ( 2, 'delete record faild' ) # 清除cache redis = db_cache.get_redis_feed_list() if redis == None: # error logging in db_cache return ( 3, 'cache error' ) redis.Del( self.uid+'_fid' ) return ( 0, 'ok' )
def getLocalNewsFeedIdList_FromDB( areaName ) : logger.debug( 'getLocalNewsFeedIdList_FromDB, area=%s' , areaName ) db = db_cache.getdb() if db == None: # error logging in db_cache return None result = [] try: rs = db.query( 'select feed_id, update_time from feed where visibility=1 and type=\'news\' and area=\'%s\' order by update_time desc limit %d' % (areaName, MAX_FEED_COUNT_FOR_FRONTPAGE) ) for rd in rs : result.append( '%d\t%s' % (time.mktime(time.strptime(str(rd[1]), "%Y-%m-%d %H:%M:%S")) , rd[0]) ) print 'getLocalNewsFeedIdList_FromDB: =============================================' print str(result) return result except: logger.error( 'getLocalNewsFeedIdList_FromDB faild, %s', str(sys.exc_info()) ) return None
def getUserFeedIdList_FromDB( uid ) : logger.debug( 'getUserFeedIdList_FromDB, id=%s', uid ) db = db_cache.getdb() if db == None: # error logging in db_cache return None result = [] try: rs = db.query( 'select resource_id, feed_id, last_modify_time from subscription where user_id=\'%s\' order by last_modify_time desc' % uid ) strResourceIds = '' for rd in rs : if strResourceIds != '' : strResourceIds += ',' strResourceIds += '\'' + rd[0] + '\'' if strResourceIds == '' : return [] resUpdateTimes = {} rs1 = db.query( 'select resource_id, update_time from resource_info where resource_id in (%s) order by update_time desc' % strResourceIds ) for rd in rs1 : resUpdateTimes[rd[0]] = rd[1] for rd in rs : ut = resUpdateTimes.get( rd[0] ) if ut == None : ut = rd[2] result.append( '%d\t%s\t%s' % (time.mktime(time.strptime(str(ut), "%Y-%m-%d %H:%M:%S")) , \ rd[1], \ rd[0]) ) return result except: logger.error( 'getUserFeedIdList_FromDB faild, %s', str(sys.exc_info()) ) return None
print 'Please useage: db/cache betin_time [end_time]!' exit() clearup_type = sys.argv[1] begin_time = sys.argv[2] end_time = '' if len(sys.argv) >= 4 : end_time = sys.argv[3] if end_time == '': end_time = '2000-01-01 00:00:00' print 'Clear up feeds of [%s]-[%s]' % (begin_time, end_time) # 得到feed列表 db = db_cache.getdb() rs = db.query( 'select feed_id, update_time from feed where update_time<=\'%s\' and update_time>=\'%s\'' % (begin_time, end_time) ) for rd in rs : print rd[1] , rd[0] print 'Feeds of [%s]-[%s], count=%d' % (begin_time, end_time, len(rs)) print 'Make sure clear up [%s] of the feeds?' % clearup_type sure = raw_input() if sure.lower() != 'y': print 'exit' exit() # 先删除DB数据 if clearup_type.lower() == 'db':