mongodb 和MinIO 常用代码

mongodb_读取id并在Minio中查找该文件是否存在

import pymongo
from minio import Minio
from minio.error import S3Error''' 
settings = {"ip": "mongodb://rootxxxx",  # ip"db_name": "tl-xxxx",  # 数据库名字
}
self.conn = MongoClient(settings['ip'])[settings['db_name']][set_name]
'''# 创建 MongoDB 连接
client = pymongo.MongoClient("mongodb://root:roxxxxx")#红绿灯老数据库
# 创建Minio客户端对象
minio_client = Minio("xxxx.xxxx.cn:9000",access_key="perxxxr",secret_key="xxxx",region="xxxx",secure=False
)mongo_config = {"ip":"mongodb://roxxxxx",   #ip"collections": ""
}bucket_name="ai-lhb-tl-xxxxx"mooogdb_name="tl-xxxx"# 选择要连接的数据库
db = client[mooogdb_name]
collection_names = db.list_collection_names()
print("collection_names:",collection_names)
# 获取要修改的 Collection 对象
collection = db.get_collection("batch10")total_imgs = []
i=0
j=0
for data in collection.find():total_imgs.append(data['_id'])image_name=data['_id']image_name="a.jpg"i=i+1#print("i={},data['_id']={}".format(i,data['_id']))# 检查文件是否存在try:# 检查文件是否存在found = minio_client.stat_object(bucket_name, image_name)if found:j=j+1pass#print("File exists")else:print("File does not exist")except S3Error as err:print(err)print("total_imgs:",len(total_imgs))
print("i:",i)
print("j:",j)# 使用 renameCollection 方法修改 Collection 名称,
# dropTarget=True 表示如果新的 Collection 名称已经存在,则删除该 Collection。
#collection.rename("batch10", dropTarget=True)# 验证 Collection 名称是否成功修改
print(db.list_collection_names())

mongodb_修改Collection名称

import pymongo
''' 
settings = {"ip": "mongodb://root:root@x.x.x.100:xxxx",  # ip"db_name": "tl-stage1",  # 数据库名字
}
self.conn = MongoClient(settings['ip'])[settings['db_name']][set_name]
'''
# 创建 MongoDB 连接
client = pymongo.MongoClient("mongodb://xxxxxx")# 选择要连接的数据库
db = client["xxxxx"]
collection_names = db.list_collection_names()
print("collection_names:",collection_names)
# 获取要修改的 Collection 对象
collection = db.get_collection("batch10_dirty")# 使用 renameCollection 方法修改 Collection 名称,
# dropTarget=True 表示如果新的 Collection 名称已经存在,则删除该 Collection。
#collection.rename("batch10", dropTarget=True)# 验证 Collection 名称是否成功修改
print(db.list_collection_names())

mongodb 复制一份已经存在的Collection并重新命名


'''**************************************************************************
文件说明:mongodb 复制一份已经存在的Collection并重新命名版本:1.0
内容:mongodb 复制一份已经存在的Collection并重新命名
时间:2024.3.23
作者:狄云***************************************************************************'''
import os
import sys
from os.path import expanduserfrom pymongo import MongoClient
import datetime
from tqdm import tqdm
import argparse
import cv2
import numpy as np
import json
import sys
import os
import multiprocessing
import torch
from pathlib import Path
from minio import Minio'''**************************************************************************
配置参数
***************************************************************************'''
# 老数据库(红绿灯)
mongo_config = {"ip":"mongodb://xxx@xxxxxx:xx",   #ip"collections": ""
}#新数据库
# mongo_config = {
#     "ip":"mongodb://xxxx@xxxxx:27017",   #ip
#     "collections": ""
# }
LABEL_PAHT="/xxx/xxx/xxxxx/label_temp/ad8c1504-xx-11ed-8bb1-xxx/2024/01/30/1706622185/label"'''**************************************************************************
函数名称: parse_args
描    述: 解析配置文件
输    入: 
输    出:
返 回 值: 
作    者:狄云
编写时间:2024.3.23
***************************************************************************'''
def parse_args(in_args=None):parser = argparse.ArgumentParser(description="upload stage1 imgs to mongodb and minio")parser.add_argument("--collection",default="xxxx",help="collection name in mongodb",)parser.add_argument("--database",default='tl-xxxx',help="database name in mongodb",)return parser.parse_args(in_args)if __name__ == '__main__':args = parse_args()t = datetime.datetime.now()conn = MongoClient(mongo_config['ip'])[args.database]print("conn=",conn)collection_names = conn.list_collection_names()print("collection_names=",collection_names)if args.collection not in collection_names:print("collection not in mongodb")print("请检察mongodb \n1、登陆账号是新数据库还是老数据库\n2、请检查database是否正确")exit(0)else:print("OK!!!! clips in mongodb")mongo_collection = conn[args.collection]old_collection_name = args.collection # 要复制的已存在集合名称new_collection_name = "batch10_temp"  # 新集合的名称pipeline = [{"$match": {}},  # 匹配所有文档{"$out": new_collection_name}  # 输出到新的集合]result = conn[old_collection_name].aggregate(pipeline)print(f"已复制集合 {old_collection_name}{new_collection_name}")

上传红绿灯标注json文件

将标注完成后的红绿灯json文件上传到minio,并在mogodb中更信json文件名称


'''**************************************************************************
文件说明:将标注完成后的红绿灯json文件上传到minio,并在mogodb中更信json文件名称版本:1.0
内容:将标注完成后的红绿灯json文件上传到minio,并在mogodb中更信json文件名称
时间:2024.3.23
作者:狄云***************************************************************************'''
import os
import sys
from os.path import expanduserfrom pymongo import MongoClient
import datetime
from tqdm import tqdm
import argparse
import cv2
import numpy as np
import json
import sys
import os
import multiprocessing
import torch
from pathlib import Path
from minio import Minio'''**************************************************************************
配置参数
***************************************************************************'''
LABEL_PAHT="/disk1/xx/xx/xxx/xxx-d038-11ed-8bb1-ebe380642749/2024/01/30/1706622185/label"# 老数据库(红绿灯)
mongo_config = {"ip":"mongodb://xxx@xxxx:xxx",   #ip"collections": ""
}#新数据库
# mongo_config = {
#     "ip":"mongodb://xxx@xx:xx",   #ip
#     "collections": ""
# }minio_client = Minio("ossapi.xxx.cn:9000",access_key="xx-xx",secret_key="xx",region="shjd-xx",secure=False
)
bucket_name = "ai-xxx-tl-xx"def parse_args(in_args=None):parser = argparse.ArgumentParser(description="upload stage1 imgs to mongodb and minio")parser.add_argument("--collection",default="xx",help="collection name in mongodb",)parser.add_argument("--database",default='tl-xxx',help="database name in mongodb",)return parser.parse_args(in_args)'''**************************************************************************
函数名称: parse_args
描    述: 使用 MongoDB 和 MinIO 来查找文件
输    入: 
输    出:
返 回 值: 
作    者:狄云
编写时间:2024.3.23
***************************************************************************'''
def processing():global mongo_collection# 1、遍历MongoDB batch10所有元素total_imgs = []for data in mongo_collection.find():image_id = data['_id']total_imgs.append(image_id)#2、 查找对应文件夹中是否存在该图像对应的json文件,有就更新MongoDB中label_json 元素,没有就不写json_name=os.path.splitext(image_id)[0]json_name=json_name+'.json'json_file_path = LABEL_PAHT + "/" + json_name # 合并文件夹路径和文件名if os.path.exists(json_file_path):#print(f"The file {json_name} exists in the folder.")passelse:print(f"The file {json_name} does not exist in the folder.")continue# 更新MongoDB中label_json 元素,update_one更新一条数据mongo_collection.update_one({"_id":image_id},{"$set":{"label_json":json_name}})#print("update OK")#3、 将 json 文件上传到minio # 上传JSON文件try:minio_client.fput_object(bucket_name, json_name, json_file_path)print(f"文件 {json_name} 上传成功至存储桶 {bucket_name}")except Exception as e:print(f"发生错误:{e}")print("total_imgs=",total_imgs[0])print("total_imgs.size=",len(total_imgs))# try:#     # 使用 MongoDB 的 find() 方法来查找具有指定 _id 的文件。#     data = conn.find({"_id": clip_name})#     for cur_data in data:#         # 此时 cur_data 获取的是_id 对应的所有数据#         print("cur_data=",cur_data)# except:#     print("代码出了问题")#     passif __name__ == '__main__':args = parse_args()t = datetime.datetime.now()conn = MongoClient(mongo_config['ip'])[args.database]print("conn=",conn)collection_names = conn.list_collection_names()print("collection_names=",collection_names)if args.collection not in collection_names:print("collection not in mongodb")print("请检察mongodb \n1、登陆账号是新数据库还是老数据库\n2、请检查database是否正确")exit(0)else:print("OK!!!! clips in mongodb")mongo_collection = conn[args.collection]processing()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript 知识点总结(2):数组与字符串

数组 数组是一种有序的集合,其中每个元素都有一个对应的索引。在JavaScript中,数组可以包含不同类型的元素,如数字、字符串和对象。 创建数组 可以使用以下语法来创建一个数组: const array [1, 2, 3, 4, 5];访问数组元素 可…

静态路由综合实验

一.实验拓扑图 二.实验要求 1、R6为ISP,接口IP地址均为公有地址,该设备只能配置IP地址,之后不能再对其进行任何配置; 2、R1-R5为局域网,私有IP地址192.168.1.0/24,请合理分配; 3、R1、R2、R…

亚马逊云科技《生成式 AI 精英速成计划》

最近亚马逊云科技推出了「生成式AI精英速成计划」,获取包含:免费学习热门生成式AI课程、技能证书、人力主管的面试辅导、云计算国际认证、免费去往北美参加全球用户大会等~ 针对开发者和企业非技术专业人士,了解如何使用大模型平台…

OpenCV学习笔记(十一)——利用Sobel算子计算梯度

Sobel算子是基于一阶导数的离散差分算子,其中Sobel对于像素值的变化是十分敏感的,在进行边缘检测的时候,Sobel算子常用于对周围像素的重要性进行检测。 Sobel算子包括检验水平方向的算子和检测竖直方向的算子 计算机梯度值的操作如下&#x…

Java设计模式 | 抽象工厂模式

抽象工厂模式 工厂方法模式中考虑的是一类产品的生产,如幼儿园只培养小朋友,鞋厂只生产鞋子。这些工厂只生产同种类产品,同种类产品称为同等级产品,即工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂都…

【计算机网络】计算机网络概述

文章目录 一、计算机网络的概念二、 计算机网络的功能1. 数据通信2. 资源共享3. 分布式处理4. 提高可靠性5. 负载均衡 补充: 计算机的发展阶段小结三、计算机网络的组成1. 组成部分2. 工作方式3. 功能组成 四、 计算机网络的分类1. 按分布范围2. 按使用者3. 按交换技…

图片html5提供的懒加载与vue-lazyload的区别

原生HTML lazy loading特性 <img src"/images/ocean.jpeg" alt"Ocean" loading"lazy"> loading"lazy" 是HTML5的一个原生特性&#xff0c;它允许浏览器延迟加载图片直至图片距离视口很近或者即将进入视口时。这是一种由浏览器…

vue3之路由导航故障

通常一个导航守卫函数中会发生这四件事之一&#xff1a; 1.通过调用 return false 中断了这次导航 2.通过返回一个新的位置&#xff0c;重定向到其他地方 (例如&#xff0c;return ‘/login’) 3.正常导航到指定路由 4.抛出了一个 Error 检测导航故障 可以使用vue-router提供的…

Docker 【通过Dockerfile构建镜像】【docker容器与镜像的关系】

文章目录 前言一、前期的准备工作二、上手构建一个简单的镜像三、DcokerFile1 指令总览2 指令详情 四、Dockerfile文件规范五、docker运行build时发生了什么?六、调试手段1. 修改镜像打包后&#xff0c;如何验证新内容已更新至镜像 七、Dockerfile优化方案 前言 docker构建镜…

JavaEE-文件操作和IO

我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进⾏数据保存时&#xff0c;往往不是保存成⼀个整体&#xff0c;⽽是独⽴成⼀个个的单位进⾏保存&#xff0c;这个独⽴的单位就被抽象成⽂件的概念&#xff0c;就类似办公桌上的⼀份份真…

stm32平衡车

目录 一.所需材料 二.PID算法&#xff08;简单说明&#xff09; 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…

隐语笔记2 —— 隐私计算开源如何助力数据要素流通

数据生命周期 数据流转链路主要包括&#xff1a;采集、存储、加工、使用、提供、传输 数据要素外循环是构建数据要素市场的核心 数据外循环中的信任焦虑 三个代表性问题&#xff1a; 不可信内部人员不按约定使用用户隐私泄漏 数据权属问题 解决方案&#xff1a;从主体信任…

设计模式(行为型设计模式——访问者模式)

设计模式&#xff08;行为型设计模式——访问者模式&#xff09; 访问者模式 基本定义 将作用于某种数据结构中的各元素的操作分离出来封装成独立的类&#xff0c;使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作&#xff0c;为数据结构中的每个元素提供多种访…

ALPHA开发板修改CAN的设备树节点信息

一. 简介 上一篇文章通过查看 CAN硬件原理图知道了 CAN1接口对应的IO。文章地址如下&#xff1a; ALPHA开发板中CAN硬件图-CSDN博客 通过ALPHA开发板上的 CAN接口的硬件原理图知道&#xff0c;CAN1_TX 和 CAN1_RX 是 I.MX6ULL的 FlexCAN1 的发送和接收引脚&#xff0c;分别对…

Eureka和Nacos的关系

目录 它们的比较&#xff1a; 结论&#xff1a; Eureka和Nacos都是服务发现和注册中心&#xff0c;它们在微服务架构中扮演着关键角色&#xff0c;但它们是由不同的组织开发的&#xff0c;服务于类似但不完全相同的目的。以下是它们之间的关系&#xff1a; Eureka&#xff1a…

JDK下载配置

一、JDK的作用 Java开发环境&#xff1a;JDK提供了完整的Java开发环境&#xff0c;包含编译器&#xff08;javac&#xff09;、解释器&#xff08;java&#xff09;、打包工具&#xff08;jar&#xff09;、文档生成工具&#xff08;javadoc&#xff09;等一系列工具&#xff0…

SpringBoot健康监控

文章目录 1-SpringBoot2-监控-健康监控服务2-SpringBoot2-监控-Admin可视化 在Spring Boot中&#xff0c;可以通过Actuator模块实现应用程序的健康监控。Actuator是Spring Boot提供的一个用于监控和管理应用程序的模块&#xff0c;可以轻松地查看应用程序的运行状况、性能指标和…

Python3条件控制实战

在Python编程中,条件控制是一种重要的编程概念,它允许我们根据条件的成立与否来执行不同的代码块。在本文中,我们将探讨Python3中条件控制的实际运用,并通过示例来演示其用法。 什么是条件控制? 条件控制是编程中的一种结构,它允许根据条件的真假来选择执行不同的代码路…

有什么可以下载网页视频的浏览器插件 浏览器如何下载网页视频 网页视频怎么下载到本地 网页视频下载软件 IDM下载

在视频网站上看电影追剧&#xff0c;已经成为了大众生活中必不可少的一部分。为了保护自家视频的版权&#xff0c;很多平台都禁止用户下载会员视频。其实只要掌握了正确的方法&#xff0c;一样可以将会员视频下载到本地保存。那么有关有什么可以下载网页视频的浏览器&#xff0…

Websocket + Vue使用

这里有一篇文档可以参考一下> 闪现 POM文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.7.0</version> </dependency> WebSocketConf…