mongodb.py 3.7 KB

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