mongodb.py 3.2 KB

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