예제 #1
0
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
예제 #2
0
 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')
예제 #3
0
    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' )
예제 #4
0
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
예제 #5
0
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
예제 #6
0
        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':