mongodb.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/6/15 14:18
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: mongodb.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. # !/usr/bin/python3
  15. import pymongo
  16. import math
  17. import platform
  18. from Ansjer.settings import SERVER_TYPE
  19. # SERVER_TYPE = 'local'
  20. class mongodb(object):
  21. def __init__(self):
  22. # sysstr = platform.system()
  23. # if (sysstr == "Windows"):
  24. # myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
  25. # elif (sysstr == "Linux"):
  26. # print("Call Linux tasks")
  27. # myclient = pymongo.MongoClient()
  28. if SERVER_TYPE == 'local':
  29. self.myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
  30. self.db = self.myclient['ansjer']
  31. elif SERVER_TYPE == 'test':
  32. self.myclient = pymongo.MongoClient()
  33. self.db = self.myclient['test_ansjer']
  34. elif SERVER_TYPE == 'formal':
  35. self.myclient = pymongo.MongoClient()
  36. self.db = self.myclient['ansjer']
  37. def check_db_exist(self, database):
  38. dblist = self.myclient.database_names()
  39. if database in dblist:
  40. return True
  41. else:
  42. return False
  43. def insert_one(self, col, data):
  44. column = self.db[col]
  45. res = column.insert_one(data)
  46. return res.inserted_id
  47. def findAll(self, col,page,line,query):
  48. collist = self.db.collection_names()
  49. if col in collist: # 判断 customers 集合是否存在
  50. # qs = self.db[col].find()
  51. if int(page) < 0:
  52. count = mdb.cout(col=col, query=query)
  53. total = math.ceil(count / int(line))
  54. page = int(total) + int(page) + 1
  55. qs = self.db[col].find(query).sort("_id", -1)
  56. count = qs.count()
  57. if page != 0 and line != 0:
  58. qs = qs.skip((page - 1) * 10).limit(line)
  59. # print(count)
  60. data = []
  61. for q in qs:
  62. q.pop('_id')
  63. if 'et' in q:
  64. q.pop('et')
  65. data.append(q)
  66. res_dict = {'data': data, 'count': count}
  67. return res_dict
  68. else:
  69. print("集合不存在!")
  70. return False
  71. #获取col总数
  72. def cout(self,col,query):
  73. collist = self.db.collection_names()
  74. if col in collist: # 判断 customers 集合是否存在
  75. # qs = self.db[col].find()
  76. qs = self.db[col].find(query)
  77. count = qs.count()
  78. return count
  79. # 删除集合(//删除表)
  80. def drop_col(self,col):
  81. column = self.db[col]
  82. column.drop()
  83. return
  84. if __name__ == '__main__':
  85. mdb = mongodb()
  86. col = "log_device_operation"
  87. # col = "log_access"
  88. # mdb.drop_col(col)
  89. # exit()
  90. # data = {"name": "111", "address": "Lowstreet 27"}
  91. # flag = mdb.insert_one(col=col, data=data)
  92. # qs = mdb.findAll(col=col, page=1, line=10,query={'UID':'C2887N9EBS87ZAT1111A'})
  93. # print(qs)
  94. '''创建索引'''
  95. # from pymongo import ASCENDING, DESCENDING
  96. ss = mdb.db[col].create_index([('type',1)])
  97. # ss = mdb.db[col].create_index([('time',1)])
  98. #print(ss)
  99. ''''''
  100. '''
  101. 604800
  102. '''
  103. '''
  104. 增加过期时间
  105. '''
  106. mdb.db[col].create_index([("et", 1)], expireAfterSeconds=604800)
  107. # mdb.db[col].create_index([("et", 1)], expireAfterSeconds=1209600)
  108. '''
  109. 删除索引
  110. '''