封装初衷
mongo的特性比较适合爬虫数据 的存储。 基本的封装使用起来比较方便。但是这里要说的是即便风转了还不能像关系型数据库那样, 直接传入Data 数据就可以, 这里灵活性比较大。 使用者传入data的时候还是要对mongodb 的sql 操作比较熟悉。 比如大于小于等。 哪些比较复杂的就没有那么好封装了。 这里使用面向对象的思想, 但是 不是封装一个 ORM 对象关系型映射。
先看下目录结构
mongodb_base 和mongo 连接的信息
mongodb_operation 静态方法 用来和mongodb 操作交互
db_base 操作所有数据库的公共方法 , 其他db 继承这个父类, 子类个性化操作数据库的方法
mongo_db 放操作各个表的类
文件中的内容
从上到下
db_base.py
from sprider.mongo_base.mongodb_base import MG
from sprider.mongo_base.mongodb_operation import BaseHandle
class DBBase(object):
""" 各种query 中的数据 data 和 mongodb 文档中的一样"""
def __init__(self, collection):
self.mg = MG()
self.collection = self.mg.db[collection]
def insert_one(self, data):
res = BaseHandle.insert_one(self.collection, data)
return res
def insert_many(self, data_list):
res = BaseHandle.insert_many(self.collection, data_list)
return res
# ========================= Query Documents Start =========
def find_one(self, data, data_field={}):
res = BaseHandle.find_one(self.collection, data, data_field)
return res
def find_many(self, data, data_field={}):
""" 有多个键值的话就是 AND 的关系"""
res = BaseHandle.find_many(self.collection, data, data_field)
return res
def find_all(self, data={}, data_field={}):