Python操作mongo--GridFS

1 篇文章 0 订阅
1 篇文章 0 订阅

业务场景:

        通过python查询mongo数据库中所存储的图片

条件:

        查询上传日期大于等于2022-03-04的图片并保存到本地

度娘了好多文章,发现除了疯狂的套娃有用的信息很少,于是有了此文章,,理解不了的可以结合截图场景很简单但是尝试的过程很操蛋,希望大家避免被套娃。初学者,若有不足请指正,欢迎点赞留言交流!

上代码!!!

import gridfs
import pymongo
import time
import datetime

from gridfs import *


class DBConn(object):
    '''
    127.0.0.1  -> 你的monogo的服务器地址
    27017      -> 你的monogo的端口
    root       -> 你的monogo的用户名
    password   -> 你的monogo的密码
    '''
    server = 'mongodb://root:password@127.0.0.1:27017'

    def connect(self):
        #创建mongo连接
        self.conn = pymongo.MongoClient(self.server)

    def close(self):
        # 关闭mongo连接
        return self.conn.disconnect()

    def getConn(self):
        # 获取mongo连接
        return self.conn


class OperateGridFS(object):
    '''
        操作mongo的GridFS桶
        根据时间查询图片数据,并存储到本地
    '''

    def __init__(self, inputDate):
        #要过滤的时间范围
        self.inuptDate = inputDate


    def findGridByQuery(self):
        #获取数据库连接
        dbconn = DBConn()
        dbconn.connect()
        #获取你要操作的库,这里的image 就是你看到的相当于mysql有一个image库 要结合截图理解
        db = dbconn.getConn().image
        #获取你要操作的表,就是你看到的相当于mysql存在一个image库中,库中又有一张fs表 要结合截图理解
        fs = gridfs.GridFS(db, collection='fs')
        for grif_out in fs.find({"uploadDate": {"$gte": datetime.datetime.strptime(self.inuptDate, '%Y-%m-%d')}}):
            filename = grif_out.filename
            data = grif_out.read()
            #存储图片的位置
            outf = open(r'C:\Users\86185\Desktop\image\{}'.format(self.path, filename), 'wb')
            outf.write(data)
            outf.close()
#方法二 速度较慢不建议
    def gridFsTest(self):
        dbconn = DBConn()
        dbconn.connect()
        db = dbconn.getConn().image
        fs = gridfs.GridFS(db, collection='fs')
        mg2 = fs.find()
        for grid_out in fs.find():
            filename = grid_out.filename
            upload_date = grid_out.upload_date
            upload_date = time.strptime(str(upload_date).split(" ")[0], '%Y-%m-%d')
            compare_date = time.strptime(self.inuptDate, '%Y-%m-%d')
            if upload_date >= compare_date:
                data = grid_out.read()
                outf = open(r'C:\Users\86185\Desktop\image\{}'.format(self.path, filename), 'wb')
                outf.write(data)
                outf.close()




if __name__ == '__main__':
    demo = OperateGridFS('2022-03-04')
    demo.findGridByQuery()

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值