zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    Jenkins系列——使用SonarQube进行代码质量检查
    HTTP1.0工作原理
    Jenkins系列——使用checkstyle进行代码规范检查
    Jenkins系列——定时构建
    Hadoop环境搭建
    eclipse3.4+对的处理插件(附SVN插件安装实例)
    MD5
    RedHat6.5更新软件源
    ubuntu软件推荐
    disconf系列【2】——解决zk部署情况为空的问题
  • 原文地址:https://www.cnblogs.com/SK1995/p/6661414.html
Copyright © 2011-2022 走看看