MongodbClient.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # coding: utf-8
  2. __author__ = 'Maps'
  3. from pymongo import MongoClient
  4. import random
  5. import json
  6. class MongodbClient(object):
  7. def __init__(self, name, host, port):
  8. self.name = name
  9. self.client = MongoClient(host, port)
  10. self.db = self.client.proxy
  11. def changeTable(self, name):
  12. self.name = name
  13. def get(self, proxy):
  14. data = self.db[self.name].find_one({'proxy': proxy})
  15. return data['num'] if data != None else None
  16. def put(self, proxy, num=1):
  17. if self.db[self.name].find_one({'proxy': proxy}):
  18. return None
  19. else:
  20. self.db[self.name].insert({'proxy': proxy, 'num': num})
  21. def pop(self):
  22. value = list(self.db[self.name].aggregate([{'$sample': {'size': 1}}]))[0]['proxy']
  23. if value:
  24. self.delete(value)
  25. return value
  26. def delete(self, value):
  27. self.db[self.name].remove({'proxy': value})
  28. def getAll(self):
  29. return {p['proxy']: p['num'] for p in self.db[self.name].find()}
  30. def clean(self):
  31. self.client.drop_database('proxy')
  32. def delete_all(self):
  33. self.db[self.name].remove()
  34. def update(self, key, value):
  35. self.db[self.name].update({'proxy': key}, {'$inc': {'num': value}})
  36. def exists(self, key):
  37. return True if self.db[self.name].find({'proxy': key}) == None else False
  38. def getNumber(self):
  39. return self.db[self.name].count()
  40. if __name__ == "__main__":
  41. db = MongodbClient('first', 'localhost', 27017)
  42. db.put('127.0.0.1:1')
  43. db2 = MongodbClient('second', 'localhost', 27017)
  44. db2.put('127.0.0.1:2')
  45. db.clean()