def match(self):
        self.set_sql_query_rule();
        self.set_sql_query_content();
        if not self.sql_select_rule:
            logging.error("set rule query error");
            return -1;
        if not self.sql_select_content:
            logging.error("set content query error");
            return -1;
        
        dbRule = MySQLClient();
        #print (multiprocessing.current_process().name);
        try:
            #print self.sql_select_rule;
            dbRule.cursor.execute(self.sql_select_rule);
            logging.error("select rule done!");
            ruleRow = dbRule.cursor.fetchall();
        except Exception as e:
            logging.error("sql query error %s", e);
            return -1;

        dbContent = MySQLClient();
        #print (multiprocessing.current_process().name);
        try:
            dbContent.cursor.execute('update ' + self.typeContent + ' set data_rule_id = null and key_word = null where data_rule_id is not null');
            logging.error("update all done!");
            dbContent.cursor.execute(self.sql_select_content);
            logging.error("select content done!");
            contentRow = dbContent.cursor.fetchall();
        except Exception as e:
            logging.error("sql query error %s", e);
            return -1;
        
        logging.error("sql connection done!");

        count = 0;
        values = [];
        for i in contentRow:
            for j in ruleRow:
                #print i[1];
                #print j[1];
                flag, result = matchRule(i[1], j[1]);
                if(flag == True):
                    try:
                        strResult = ",".join(result);
                        logging.error("sql update strResult %s", i[0]);
                        values.append((j[0], strResult, i[0]));
                        #logging.error("sql update strResult %s", values);
                        count = count + 1;
                        #sql_update = 'update %s set data_rule_id = %s, key_word = \'%s\' where id = %s' %(self.typeContent, j[0], strResult, i[0]);
                        #print sql_update;
                        #dbContent.cursor.execute(sql_update);
                        break;
                    except Exception as e:
                        logging.error("sql update error %s", e);
                        return -1;
            if(count == 100):
                print count;
                print values;
                logging.error("sql update strResult %s", values);
                try:
                    update_sql = 'update ' + self.typeContent + ' set data_rule_id = %s, key_word = %s where id = %s'
                    #dbContent.cursor.executemany('update content_isproduct set data_rule_id=%s, key_word=%s where id=%s', values);
                    dbContent.cursor.executemany(update_sql, values);
                    count = 0;
                    values = [];
                except Exception as e:
                    logging.error("sql executemany error %s", e);
                    return -1;
        if(count != 0):
                print count;
                print values;
                logging.error("sql update strResult %s", values);
                try:
                    update_sql = 'update ' + self.typeContent + ' set data_rule_id = %s, key_word = %s where id = %s';
                    logging.error(update_sql);
                    dbContent.cursor.executemany(update_sql, values);
                    #dbContent.cursor.executemany('update content_isproduct_copy set data_rule_id=%s, key_word=%s where id=%s', values);
                    count = 0;
                    values = [];
                except Exception as e:
                    logging.error("sql executemany error %s", e);
                    return -1;
        dbRule.close();
        dbContent.close();
示例#2
0
文件: Main.py 项目: booox/tweibo
def mysql_save(create_time,content):
	mysql_client = MySQLClient()
	with mysql_client:
		mysql_client.insert(create_time,content)
示例#3
0
    def match(self):
        self.set_sql_query_rule()
        self.set_sql_query_content()
        if not self.sql_select_rule:
            logging.error("set rule query error")
            return -1
        if not self.sql_select_content:
            logging.error("set content query error")
            return -1

        dbRule = MySQLClient()
        #print (multiprocessing.current_process().name);
        try:
            #print self.sql_select_rule;
            dbRule.cursor.execute(self.sql_select_rule)
            logging.error("select rule done!")
            ruleRow = dbRule.cursor.fetchall()
        except Exception as e:
            logging.error("sql query error %s", e)
            return -1

        dbContent = MySQLClient()
        #print (multiprocessing.current_process().name);
        try:
            dbContent.cursor.execute(
                'update ' + self.typeContent +
                ' set data_rule_id = null and key_word = null where data_rule_id is not null'
            )
            logging.error("update all done!")
            dbContent.cursor.execute(self.sql_select_content)
            logging.error("select content done!")
            contentRow = dbContent.cursor.fetchall()
        except Exception as e:
            logging.error("sql query error %s", e)
            return -1

        logging.error("sql connection done!")

        count = 0
        values = []
        for i in contentRow:
            for j in ruleRow:
                #print i[1];
                #print j[1];
                flag, result = matchRule(i[1], j[1])
                if (flag == True):
                    try:
                        strResult = ",".join(result)
                        logging.error("sql update strResult %s", i[0])
                        values.append((j[0], strResult, i[0]))
                        #logging.error("sql update strResult %s", values);
                        count = count + 1
                        #sql_update = 'update %s set data_rule_id = %s, key_word = \'%s\' where id = %s' %(self.typeContent, j[0], strResult, i[0]);
                        #print sql_update;
                        #dbContent.cursor.execute(sql_update);
                        break
                    except Exception as e:
                        logging.error("sql update error %s", e)
                        return -1
            if (count == 100):
                print count
                print values
                logging.error("sql update strResult %s", values)
                try:
                    update_sql = 'update ' + self.typeContent + ' set data_rule_id = %s, key_word = %s where id = %s'
                    #dbContent.cursor.executemany('update content_isproduct set data_rule_id=%s, key_word=%s where id=%s', values);
                    dbContent.cursor.executemany(update_sql, values)
                    count = 0
                    values = []
                except Exception as e:
                    logging.error("sql executemany error %s", e)
                    return -1
        if (count != 0):
            print count
            print values
            logging.error("sql update strResult %s", values)
            try:
                update_sql = 'update ' + self.typeContent + ' set data_rule_id = %s, key_word = %s where id = %s'
                logging.error(update_sql)
                dbContent.cursor.executemany(update_sql, values)
                #dbContent.cursor.executemany('update content_isproduct_copy set data_rule_id=%s, key_word=%s where id=%s', values);
                count = 0
                values = []
            except Exception as e:
                logging.error("sql executemany error %s", e)
                return -1
        dbRule.close()
        dbContent.close()
 def worker(self,worker_id,):
     self.set_sql_querry(worker_id)
     if not self.sql_select_str:
         logging.error("set query error")
         return -1
     time.sleep(worker_id)
     db = MySQLClient(host=self.host,port=self.port,user=self.user,passwd=self.passwd,db=self.DB_name)
     algo = algoClient(self.serIp,self.serport)
     print multiprocessing.current_process().name
     
     #执行select语句
     try:
         logging.info("Start select")
         db.cursor.execute(self.sql_select_str)
         res = db.cursor.fetchall()
         logging.info("End select")
     except Exception as e:
         traceback.print_exc()
         logging.error("sql query error %s", e)
         return -1
     
     
     #处理读出的每一条记录
     count=0
     values=[]
     logging.info("Start fetch result")
     
     #loop all the rows fetched
     for i in res:
         
         #query api to get values
         try:
             resultlist=[]
             for j in self.servicelist:
                 resultlist.append(getattr(algo.client,j)(i[1]))
                 logging.info("id: %s \t result: %s", i[0],getattr(algo.client,j)(i[1]))
             resultlist.append(i[0])
             values.append(tuple(resultlist))
             count=count+1
         except Exception as e:
             algo.close()
             algo = algoClient(self.serIp,self.serport)
             traceback.print_exc()
             logging.error("algo error: %s: %s",i[1],e)
             continue
         
         #generate update sql and batch update db
         try:
             tmpstr=''
             for d in range(0,len(self.field_name)-1):
                 tmpstr=tmpstr+self.field_name[d]+' =%s,'
             tmpstr=tmpstr+self.field_name[len(self.field_name)-1]+' =%s'
             self.sql_update_str='update '+self.table_name+' set '+tmpstr+' where id =%s'
             if(count==self.sqlBatchUpdate_num):
                 logging.info("End fetch result")
                 db.cursor.executemany(self.sql_update_str,values)
                 logging.info("Update complete")
                 count=0
                 values=[]
         except Exception as e:
             print "cfs"
             traceback.print_exc() 
             logging.error("sql update error: %s",e)
             continue
     
     if count!=0:
         db.cursor.executemany(self.sql_update_str,values)
         logging.info("Update All comllete")
         
     db.close()
     algo.close()
示例#5
0
    def worker(
        self,
        worker_id,
    ):
        self.set_sql_querry(worker_id)
        if not self.sql_select_str:
            logging.error("set query error")
            return -1
        time.sleep(worker_id)
        db = MySQLClient(host=self.host,
                         port=self.port,
                         user=self.user,
                         passwd=self.passwd,
                         db=self.DB_name)
        algo = algoClient(self.serIp, self.serport)
        print multiprocessing.current_process().name

        #执行select语句
        try:
            logging.info("Start select")
            db.cursor.execute(self.sql_select_str)
            res = db.cursor.fetchall()
            logging.info("End select")
        except Exception as e:
            traceback.print_exc()
            logging.error("sql query error %s", e)
            return -1

        #处理读出的每一条记录
        count = 0
        values = []
        logging.info("Start fetch result")

        #loop all the rows fetched
        for i in res:

            #query api to get values
            try:
                resultlist = []
                for j in self.servicelist:
                    resultlist.append(getattr(algo.client, j)(i[1]))
                    logging.info("id: %s \t result: %s", i[0],
                                 getattr(algo.client, j)(i[1]))
                resultlist.append(i[0])
                values.append(tuple(resultlist))
                count = count + 1
            except Exception as e:
                algo.close()
                algo = algoClient(self.serIp, self.serport)
                traceback.print_exc()
                logging.error("algo error: %s: %s", i[1], e)
                continue

            #generate update sql and batch update db
            try:
                tmpstr = ''
                for d in range(0, len(self.field_name) - 1):
                    tmpstr = tmpstr + self.field_name[d] + ' =%s,'
                tmpstr = tmpstr + self.field_name[len(self.field_name) -
                                                  1] + ' =%s'
                self.sql_update_str = 'update ' + self.table_name + ' set ' + tmpstr + ' where id =%s'
                if (count == self.sqlBatchUpdate_num):
                    logging.info("End fetch result")
                    db.cursor.executemany(self.sql_update_str, values)
                    logging.info("Update complete")
                    count = 0
                    values = []
            except Exception as e:
                print "cfs"
                traceback.print_exc()
                logging.error("sql update error: %s", e)
                continue

        if count != 0:
            db.cursor.executemany(self.sql_update_str, values)
            logging.info("Update All comllete")

        db.close()
        algo.close()