1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/usr/bin/python
- # -*- coding:utf-8 -*-
- import pymongo
- import datetime
- import time
- import random
- import logging
- from util.config import config
- class MongoConfig(object):
- HOST = config.get('mongodb', 'host')
- USER = config.get('mongodb', 'user')
- PORT = int(config.get('mongodb', 'port'))
- PASSWORD = config.get('mongodb', 'password')
- DB = config.get('mongodb', 'db')
- def _get_default_mongodb_instance():
- mongo_client = pymongo.MongoClient(MongoConfig.HOST, MongoConfig.PORT)
- db = mongo_client[MongoConfig.DB]
- if MongoConfig.PASSWORD is not None and MongoConfig.PASSWORD != '':
- db.authenticate(MongoConfig.USER, MongoConfig.PASSWORD)
- return db
- def get_mongodb_tablenames():
- db = _get_default_mongodb_instance()
- return db.collection_names(include_system_collections=False)
- def get_mongo_table_instance(tablename):
- db = _get_default_mongodb_instance()
- return db[tablename]
- def del_mongodb_table(tablename):
- try:
- db = _get_default_mongodb_instance()
- db.drop_collection(tablename)
- return True
- except:
- return False
- def rename_mongodb_table(from_tablename, to_tablename):
- try:
- get_mongo_table_instance(from_tablename).rename(to_tablename)
- return True
- except:
- return False
- def get_mongodb_table_indexes(tablename):
- try:
- ret = []
- ftable = get_mongo_table_instance(tablename)
- findex = ftable.list_indexes()
- listindex = list(findex)
- if listindex is None or len(listindex) == 0:
- return ret
- for i in listindex:
- sonobj = i['key']
- indexes = []
- for k, v in sonobj.iteritems():
- v1 = pymongo.ASCENDING if v > 0 else pymongo.DESCENDING
- temp = (k, v1)
- indexes.append(temp)
- ret.append(indexes)
- return ret
- except Exception as e:
- return None
- def set_mongodb_table_indexes(tablename, indexes):
- try:
- ftable = get_mongo_table_instance(tablename)
- if indexes is None or len(indexes) == 0:
- return True
- for i in indexes:
- ftable.ensure_index(i)
- return True
- except Exception as e:
- return False
- def copy_mongodb_table_indexes(from_tablename, to_tablename):
- indexes = get_mongodb_table_indexes(from_tablename)
- set_mongodb_table_indexes(to_tablename, indexes)
|