mongodb.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. from Ansjer.config import SERVER_TYPE
  18. # SERVER_TYPE = 'local'
  19. class mongodb(object):
  20. def __init__(self):
  21. # sysstr = platform.system()
  22. # if (sysstr == "Windows"):
  23. # myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
  24. # elif (sysstr == "Linux"):
  25. # print("Call Linux tasks")
  26. # myclient = pymongo.MongoClient()
  27. if SERVER_TYPE == 'Ansjer.local_settings':
  28. self.myclient = pymongo.MongoClient('mongodb://192.168.136.45:27017/')
  29. self.db = self.myclient['ansjer']
  30. elif SERVER_TYPE == 'Ansjer.test_settings':
  31. self.myclient = pymongo.MongoClient()
  32. self.db = self.myclient['test_ansjer']
  33. elif SERVER_TYPE == 'Ansjer.formal_settings':
  34. self.myclient = pymongo.MongoClient()
  35. self.db = self.myclient['ansjer']
  36. def check_db_exist(self, database):
  37. dblist = self.myclient.database_names()
  38. if database in dblist:
  39. return True
  40. else:
  41. return False
  42. def insert_one(self, col, data):
  43. column = self.db[col]
  44. res = column.insert_one(data)
  45. return res.inserted_id
  46. def findAll(self, col,page,line,query):
  47. collist = self.db.collection_names()
  48. if col in collist: # 判断 customers 集合是否存在
  49. # qs = self.db[col].find()
  50. if int(page) < 0:
  51. count = mdb.cout(col=col, query=query)
  52. total = math.ceil(count / int(line))
  53. page = int(total) + int(page) + 1
  54. qs = self.db[col].find(query).sort("_id", -1)
  55. count = qs.count()
  56. if page != 0 and line != 0:
  57. qs = qs.skip((page - 1) * 10).limit(line)
  58. # print(count)
  59. data = []
  60. for q in qs:
  61. q.pop('_id')
  62. if 'et' in q:
  63. q.pop('et')
  64. data.append(q)
  65. res_dict = {'data': data, 'count': count}
  66. return res_dict
  67. else:
  68. print("集合不存在!")
  69. return False
  70. #获取col总数
  71. def cout(self,col,query):
  72. collist = self.db.collection_names()
  73. if col in collist: # 判断 customers 集合是否存在
  74. # qs = self.db[col].find()
  75. qs = self.db[col].find(query)
  76. count = qs.count()
  77. return count
  78. # 删除集合(//删除表)
  79. def drop_col(self,col):
  80. column = self.db[col]
  81. column.drop()
  82. return
  83. if __name__ == '__main__':
  84. mdb = mongodb()
  85. col = "log_device_operation"
  86. # col = "log_access"
  87. # mdb.drop_col(col)
  88. # exit()
  89. # data = {"name": "111", "address": "Lowstreet 27"}
  90. # flag = mdb.insert_one(col=col, data=data)
  91. # qs = mdb.findAll(col=col, page=1, line=10,query={'UID':'C2887N9EBS87ZAT1111A'})
  92. # print(qs)
  93. '''创建索引'''
  94. # from pymongo import ASCENDING, DESCENDING
  95. ss = mdb.db[col].create_index([('type',1)])
  96. # ss = mdb.db[col].create_index([('time',1)])
  97. #print(ss)
  98. ''''''
  99. '''
  100. 604800
  101. '''
  102. '''
  103. 增加过期时间
  104. '''
  105. mdb.db[col].create_index([("et", 1)], expireAfterSeconds=604800)
  106. # mdb.db[col].create_index([("et", 1)], expireAfterSeconds=1209600)
  107. '''
  108. 删除索引
  109. '''