python 日誌入庫mongodb

來源:互聯網
上載者:User

標籤:python mongodb

今天和大家分享一個python入庫mongodb的指令碼。。。


涉及到python和mongodb,那麼安裝相應的模組四必不可少的,最簡單的安裝方法,或者非pip不可了。

# pip install pymongo==3.0.4

順便也記錄下源碼安裝的方式

# wget https://pypi.python.org/packages/source/p/pymongo/pymongo-2.8.tar.gz#md5=23100361c9af1904eb2d7722f2658114 --no-check-certificate# tar xf pymongo-2.8.tar.gz# cd pymongo-2.8# python setup.py install


摘自一則日誌

35783s100android475192.168.1.1002015-09-05 08:03:19strengthenHeroByHeroes{"consume_gold":{"ogold":2893821,"cgold":1700,"gold":2892121,"tag":"strengthenHeroByHeroes"},"taskInfo":[{"id":2310033,"progress":2,"status":0}],"delHeroList":{"id":102014,"id":102014,"id":102014,"id":102010,"id":102010},"id":100026,"olevel":46,"oexp":1700,"cexp":1700,"level":46,"exp":3400}865982021462182XiaoMi


入庫mongodb的python指令碼

#!/usr/bin/env python#coding:utf8import osimport sysimport jsonfrom pymongo import MongoClientfrom datetime import datetime, date, timedef ConMongo(host,port,cur_db,username,password):#連結MongoDB    client = MongoClient(host,port)    db = client[cur_db]    db.authenticate(username,password)    table = db.gamelogs    return tabledef parseLog(file_log,Connection):    dic = {}    dl = []    with open(file_log) as fd:        for line in fd:    try:        tokens = line.strip().split(‘\t‘)        uid = tokens[0]        server = tokens[1]        system = tokens[2]        level = int(tokens[3])        vip_level = tokens[4]        ip = tokens[5]        time = datetime.strptime(tokens[6], "%Y-%m-%d %H:%M:%S")#將時間字串轉換成時間格式        action = tokens[7]        result = json.loads(tokens[8])#特殊字元串轉換成json格式        uuid = tokens[9]if uid == ‘undefined‘:    if result["game_user_id"]:uid = result["game_user_id"]if len(tokens) == 12:            channel = tokens[11]else:    channel = ‘‘        dic = {‘uid‘:uid,‘server‘:server,‘system‘:system,‘level‘:level,‘vip_level‘:vip_level,‘ip‘:ip,‘time‘:time,‘action‘:action,‘result‘:result,‘uuid‘:uuid,‘channel‘:channel}dl.append(dic)if len(dl) == 20000:    Connection.insert_many(dl)    dl = []    except Exception,e:print e, lineif len(dl) > 0:    Connection.insert_many(dl)if __name__ == ‘__main__‘:    Conn = ConMongo(‘localhost‘,27017,‘talefundb‘,‘talefun‘,‘123456‘)    try:        parseLog(sys.argv[1],Conn)    except IndexError,e:print ‘./%s path_logfile‘ % os.path.basename(__file__)


本文出自 “鄭彥生” 部落格,請務必保留此出處http://467754239.blog.51cto.com/4878013/1692082

python 日誌入庫mongodb

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.