python操作數據庫之批量導入


python操作數據庫之批量導入


Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中[3] 有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。

批量從mongodb導入數據到redis
  • 結構圖如下
python->mongodb:python取出mongodb數據
mongodb->redis:mongodb數據經過處理后保存到redis
  • python代碼如下:
# -*- coding: utf-8 -*-
import redis
import pymongo
import logging
class savequestionmafengwo(object):
    def __init__(self):
        logging.basicConfig(filename = "./save-mafengwo-question.log", level = logging.DEBUG)
        self.redis_pool_conn=self.redis_pool()
        self.redis_db=self.connection_redis_db();
        self.mongo_db=self.connection_mongo_db();
        self.url='http://www.mafengwo.cn/wenda/detail-';
        self.hz='.html';
    def redis_pool(self):
        pool_redis=redis.ConnectionPool(host='IP',port=PORT,db=DB,password=PASS);
        return pool_redis;
    def connection_redis_db(self):
        pool=self.redis_pool_conn;
        redis_db = redis.Redis(connection_pool=pool)
        return redis_db;
    def get_data(self,start):
        mongo=self.mongo_db
        qas=mongo.find({"source":"mafengwo","type":"question"},{"qid":1}).skip(start).limit(40000);
        return qas;
    def put_data(self,start):
        qas=self.get_data(start);
        i=start
        for qa in qas:
            try:
                urlF = self.url + str(qa['qid']) + self.hz;
                self.redis_set_value(urlF);
                logging.debug(str(i) + "------" + urlF)
                i = i + 1
            except:
                logging.debug("error:" + str(qa['_id']))
                raise
    def connection_mongo_db(self):
        client = pymongo.MongoClient("IP", PORT)
        mydb = client.hello # new a database
        mydb.authenticate('USER', 'PASS') # check auth
        muser = mydb.QA# new a table
        return muser;
    def redis_set_value(self,urlF):
        db =self.redis_db
        db.set(urlF,"1");

if __name__ == '__main__':
    savequestionmafengwo=savequestionmafengwo();
    start={0,40000}
    for st in start:
        savequestionmafengwo.put_data(start)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM