mongodb.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. import pymongo
  4. import datetime
  5. import time
  6. import random
  7. import logging
  8. from util.config import config
  9. class MongoConfig(object):
  10. HOST = config.get('mongodb', 'host')
  11. USER = config.get('mongodb', 'user')
  12. PORT = int(config.get('mongodb', 'port'))
  13. PASSWORD = config.get('mongodb', 'password')
  14. DB = config.get('mongodb', 'db')
  15. def _get_default_mongodb_instance():
  16. mongo_client = pymongo.MongoClient(MongoConfig.HOST, MongoConfig.PORT)
  17. db = mongo_client[MongoConfig.DB]
  18. if MongoConfig.PASSWORD is not None and MongoConfig.PASSWORD != '':
  19. db.authenticate(MongoConfig.USER, MongoConfig.PASSWORD)
  20. return db
  21. def get_mongodb_tablenames():
  22. db = _get_default_mongodb_instance()
  23. return db.collection_names(include_system_collections=False)
  24. def get_mongo_table_instance(tablename):
  25. db = _get_default_mongodb_instance()
  26. return db[tablename]
  27. def del_mongodb_table(tablename):
  28. try:
  29. db = _get_default_mongodb_instance()
  30. db.drop_collection(tablename)
  31. return True
  32. except:
  33. return False
  34. def rename_mongodb_table(from_tablename, to_tablename):
  35. try:
  36. get_mongo_table_instance(from_tablename).rename(to_tablename)
  37. return True
  38. except:
  39. return False
  40. def get_mongodb_table_indexes(tablename):
  41. try:
  42. ret = []
  43. ftable = get_mongo_table_instance(tablename)
  44. findex = ftable.list_indexes()
  45. listindex = list(findex)
  46. if listindex is None or len(listindex) == 0:
  47. return ret
  48. for i in listindex:
  49. sonobj = i['key']
  50. indexes = []
  51. for k, v in sonobj.iteritems():
  52. v1 = pymongo.ASCENDING if v > 0 else pymongo.DESCENDING
  53. temp = (k, v1)
  54. indexes.append(temp)
  55. ret.append(indexes)
  56. return ret
  57. except Exception as e:
  58. return None
  59. def set_mongodb_table_indexes(tablename, indexes):
  60. try:
  61. ftable = get_mongo_table_instance(tablename)
  62. if indexes is None or len(indexes) == 0:
  63. return True
  64. for i in indexes:
  65. ftable.ensure_index(i)
  66. return True
  67. except Exception as e:
  68. return False
  69. def copy_mongodb_table_indexes(from_tablename, to_tablename):
  70. indexes = get_mongodb_table_indexes(from_tablename)
  71. set_mongodb_table_indexes(to_tablename, indexes)