python操作数据库之批量导入

来源:互联网 发布:网络小额贷款平台 编辑:程序博客网 时间:2024/06/05 03:46

python操作数据库之批量导入


Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3] 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。


批量从mongodb导入数据到redis

  • 结构图如下
Created with Raphaël 2.1.0pythonpythonmongodbmongodbredisredispython取出mongodb数据mongodb数据经过处理后保存到redis
  • python代码如下
# -*- coding: utf-8 -*-import redisimport pymongoimport loggingclass 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)
0 0
原创粉丝点击