如果是 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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?