| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # coding: utf-8
- """
- -------------------------------------------------
- File Name: MongodbClient.py
- Description : 封装mongodb操作
- Author : JHao netAir
- date: 2017/3/3
- -------------------------------------------------
- Change Activity:
- 2017/3/3:
- 2017/9/26:完成对mongodb的支持
- -------------------------------------------------
- """
- __author__ = 'Maps netAir'
- from pymongo import MongoClient
- class MongodbClient(object):
- def __init__(self, name, host, port):
- self.name = name
- self.client = MongoClient(host, port)
- self.db = self.client.proxy
- def changeTable(self, name):
- self.name = name
- def get(self, proxy):
- data = self.db[self.name].find_one({'proxy': proxy})
- return data['num'] if data != None else None
- def put(self, proxy, num=1):
- if self.db[self.name].find_one({'proxy': proxy}):
- return None
- else:
- self.db[self.name].insert({'proxy': proxy, 'num': num})
- def pop(self):
- data = list(self.db[self.name].aggregate([{'$sample': {'size': 1}}]))
- if data:
- data = data[0]
- value = data['proxy']
- self.delete(value)
- return {'proxy': value, 'value': data['num']}
- return None
- def delete(self, value):
- self.db[self.name].remove({'proxy': value})
- def getAll(self):
- return {p['proxy']: p['num'] for p in self.db[self.name].find()}
- def clean(self):
- self.client.drop_database('proxy')
- def delete_all(self):
- self.db[self.name].remove()
- def update(self, key, value):
- self.db[self.name].update({'proxy': key}, {'$inc': {'num': value}})
- def exists(self, key):
- return True if self.db[self.name].find_one({'proxy': key}) != None else False
- def getNumber(self):
- return self.db[self.name].count()
- if __name__ == "__main__":
- db = MongodbClient('first', 'localhost', 27017)
- # db.put('127.0.0.1:1')
- # db2 = MongodbClient('second', 'localhost', 27017)
- # db2.put('127.0.0.1:2')
- print(db.pop())
|