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)