如果是 pymongo==4.x   pls   

pip3 install pymongo==4.5.0  
 client = pymongo.MongoClient(host="192.168.12.153", port=27017, username="root", password="root", authSource="admin")
 client = pymongo.MongoClient(host="mongodb://admin:123456@localhost:27017/?authSource=db_sea")

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @mail    : lshan523@163.com
# @Time    : 2023/9/11 11:06
# @Author  : Sea
# @File    : MongoUtils.py
# @history:
# ****************************

import pymongo
from urllib import parse

class MongoUtils:
    def __init__(self, host="127.0.0.1", port=27017, dbname="admin", mongo_user=None, mongo_password=None):
        if mongo_user and mongo_password:
            mongo_password = parse.quote_plus(mongo_password)
            # uri = "mongodb://" + mongo_user + ":" + mongo_password + "@" + host + ":" + str(port) + "/?authSource=" + dbname
            uri = "mongodb://{0}:{1}@{2}:{3}/?authSource={4}"
            uri = uri.format(mongo_user, mongo_password, host, port, dbname)
        else:
            uri = "mongodb://" + host + ":" + str(port) + "/?directConnection=true"
            # uri = "mongodb://192.168.16.122:27017/?directConnection=true"
            print(uri)
        self.client = pymongo.MongoClient(host=uri)
        # 指向指定的数据库
        self.mdb = self.client[dbname]

    def insert_json_str(self, table, str_json_data):
        post = self.mdb[str(table)]
        post.insert_one(dict(str_json_data))

    def insert_dict(self, table, dicts):
        post = self.mdb[str(table)]
        post.insert_many(dicts)

    def saveOrUpdate(self, table, data={}):
        tb = self.mdb[str(table)]
        print(str(data))
        if not data.get("_id", None)==None:
            # maybe need do_update "
            query = {'_id': data["_id"]}
            del data["_id"]
            result = tb.update_one(filter=query, update={'$set': data}, upsert=True)
            print("update data  success")
            return result
        result = tb.insert_one(data)
        print("insert data success")
        return result

    def drop_table(self, table):
        post = self.mdb[str(table)]
        post.drop()

    def delById(self, table, id):
        print("&&&&  delById &&&&&&" + str(id))
        tb = self.mdb[str(table)]
        tb.delete_one({"_id": id})

    def delByQuery(self, table, query={}):
        """{"_id": id}"""
        print("&&&&& delByQuery &&&&&&&" + str(query))
        tb = self.mdb[str(table)]
        tb.delete_one(query)

    def find(self, table, query={}, limit=100):
        """ query = {'name':'sea'}  return list """
        tb = self.mdb[str(table)]
        return tb.find(query).limit(limit)

    def find_one(self, table, query={}):
        """ query = {'name':'sea'}  return list """
        tb = self.mdb[str(table)]
        return tb.find_one(query)

    def find_one_by(self, table, query={}, projection=None, sortBy="ts"):
        """ query = {'name':'sea'} projection={"_id": -1}  return list """
        tb = self.mdb[str(table)]
        return tb.find_one(filter=query, projection=projection, sort=[(sortBy, pymongo.ASCENDING)])


    def update_one(self, table, query=None, update={}):
        """ query = {'name':'sea'}  update = {"no":1}  """
        tb = self.mdb[str(table)]
        if filter:
            return tb.update_one(filter=query, update={'$set': update}, upsert=True)
        return 0

    def count(self, table, query=None):
        """ query = {'name':'sea'}   """
        tb = self.mdb[str(table)]
        if filter:
            return tb.count_documents(filter=query)


if __name__ == '__main__':
    utils = MongoUtils(host="192.168.182.122", port=27017, dbname="bx_blog_script")
    # utils = MongoUtils(host="192.168.123.52", port=27017, dbname="sea", mongo_user="root",mongo_password="root")
    utils.saveOrUpdate(table="sea_1231", data={"_id": 1, "page": 0, "data": "123213"})
    # # # data = utils.findoneBy(table="sea_blacklist",projection={"page": 1},sort=[{"page":1}])
    # # tb = utils.mdb[str("sea_blacklist")]
    # # # data = tb.find(filter={}).sort("page ",pymongo.DESCENDING)
    # # data = tb.find_one(filter={}, projection={"page":1, "_id": -1}, sort=[('page', pymongo.DESCENDING )])
    # # print(data)
    # by = utils.findoneBy(table="sea_blacklist")
    # print(by["page"])
    #
    # alluser = utils.find(table="user", query={})
    # i = 0
    # for user in alluser:
    #     i = i + 1
    #     print(i)
    #     print(user)

 

 

 

 

pip3 install pymongo==3.13.0  
import pymongo
class MongoUtils:

    def __init__(self, host="127.0.0.1", port=27017, dbname="admin", mongo_user=None, mongo_password=None):
        # myclient = pymongo.MongoClient(host="mongodb://admin:123456@localhost:27017/?authSource=db_sea")
        client = pymongo.MongoClient(host=host, port=port)
        # 指向指定的数据库
        self.mdb = client[dbname]
        if mongo_user:
            self.mdb.authenticate(mongo_user, mongo_password)
        # 获取数据库里存放数据的表名
        # self.post = mdb["categoryname"]

    def insert_json_str(self, table, str_json_data):
        post = self.mdb[str(table)]
        post.insert(dict(str_json_data))

    def insert_dict(self, table, dicts):
        post = self.mdb[str(table)]
        post.insert(dicts)

    def saveOrUpdate(self, table, data={}):
        post = self.mdb[str(table)]
        return post.save(data)

    def drop_table(self, table):
        post = self.mdb[str(table)]
        post.drop()

    def delById(self, table, id):
        tb = self.mdb[str(table)]
        tb.delete_one({"_id": id})

    def find(self, table, query={}):
        """ query = {'name':'sea'}  return list """
        tb = self.mdb[str(table)]
        return tb.find(query)

    def find_one(self, table, query={}):
        """ query = {'name':'sea'}  return list """
        tb = self.mdb[str(table)]
        return tb.find_one(query)

    def find_one_by(self, table, query={}, projection=None, sortBy="ts"):
        """ query = {'name':'sea'} projection={"_id": -1}  return list """
        tb = self.mdb[str(table)]
        return tb.find_one(filter=query, projection=projection, sort=[(sortBy, pymongo.ASCENDING)])

    def save(self, table, data={}):
        """ query = {'name':'sea'}  return list """
        tb = self.mdb[str(table)]
        return tb.save(data)

    def update_one(self, table, query=None, update={}):
        """ query = {'name':'sea'}  update = {"no":1}  """
        tb = self.mdb[str(table)]
        if filter:
            return tb.update_one(filter=query, update={'$set': update}, upsert=True)
        return 0

    def count(self, table, query=None):
        """ query = {'name':'sea'}   """
        tb = self.mdb[str(table)]
        if filter:
            return tb.count(filter=query)

    def __del__(self):
        self.mdb.logout()


if __name__ == '__main__':
    utils = MongoUtils(host="192.168.186.122", port=27017, dbname="bx_blog_script")
    # utils.insert_dict(table="sea_blacklist",dicts=[{"_id":0,"page":0,"data":""}])
    # # # data = utils.findoneBy(table="sea_blacklist",projection={"page": 1},sort=[{"page":1}])
    # # tb = utils.mdb[str("sea_blacklist")]
    # # # data = tb.find(filter={}).sort("page ",pymongo.DESCENDING)
    # # data = tb.find_one(filter={}, projection={"page":1, "_id": -1}, sort=[('page', pymongo.DESCENDING )])
    # # print(data)
    # by = utils.findoneBy(table="sea_blacklist")
    # print(by["page"])

    alluser = utils.find(table="user", query={})
    print(type(alluser))
    i = 0
    for user in alluser:
        i = i + 1
        print(i)
        user = dict(user)
        print(type(user))
        user["nickName"] = user.get("nickname", "")
        if "nickname" in user.keys():
            del user["nickname"]
        user["avatar"] = user.get("headImgUrl", "")
        if "headImgUrl" in user.keys():
            del user["headImgUrl"]
        user["username"] = user.get("userName", "")
        if "username" in user.keys():
            del user["username"]
        # utils.insert_dict(table="user",dict=user)
        utils.save(table="user", data=user)
        print(user)

 

 

 

posted on 2019-11-14 11:01  lshan  阅读(490)  评论(0编辑  收藏  举报