日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python 操作GridFS

發布時間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python 操作GridFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import pymongo
from pymongo import MongoClient
from gridfs import GridFS
class GFS(object):
    def __init__(self, file_db,file_table):
        self.file_db = file_db
        self.file_table = file_table
 
    def createDB(self): #連接數據庫,并創建文件數據庫與數據表
        client = MongoClient('localhost',27017)
        db = client[self.file_db]
        file_table = db[self.file_table]
        return (db,file_table)
 
    def insertFile(self,db,filePath,query): #將文件存入數據表
        fs = GridFS(db,self.file_table)
        if fs.exists(query):
            print('已經存在該文件')
        else:
            with open(filePath,'rb') as fileObj:
                data = fileObj.read()
                ObjectId = fs.put(data,filename = filePath.split('/')[-1])
                print(ObjectId)
                fileObj.close()
            return ObjectId
 
    def getID(self,db,query): #通過文件屬性獲取文件ID,ID為文件刪除、文件讀取做準備
        fs=GridFS(db, self.file_table)
        ObjectId=fs.find_one(query)._id
        return ObjectId
 
    def getFile(self,db,id): #獲取文件屬性,并讀出二進制數據至內存
        fs = GridFS(db, self.file_table)
        gf=fs.get(id)
        bdata=gf.read() #二進制數據
        attri={} #文件屬性信息
        attri['chunk_size']=gf.chunk_size
        attri['length']=gf.length
        attri["upload_date"] = gf.upload_date
        attri["filename"] = gf.filename
        attri['md5']=gf.md5
        print(attri)
        return (bdata, attri)
 
    # def listFile(self,db): #列出所有文件名
    #     fs = GridFS(db, self.file_table)
    #     gf = fs.list()
 
    # def findFile(self,db,file_table): #列出所有文件二進制數據
    #     fs = GridFS(db, table)
    #     for file in fs.find():
    #         bdata=file.read()
 
    def write_2_disk(self,bdata, attri): #將二進制數據存入磁盤
        name = "get_"+attri['filename']
        if name:
            output = open(name, 'wb')
        output.write(bdata)
        output.close()
        print("fetch image ok!")
 
    def remove(self,db,id): #文件數據庫中數據的刪除
        fs = GridFS(db, self.file_table)        
        fs.delete(id) #只能是id
 
 
if __name__=='__main__':
    gfs=GFS('fileDB','fileTable')
    (file_db,fileTable) = gfs.createDB() #創建數據庫與數據表
    filePath = 'C:/Users/Administrator/Desktop/02655.jpeg' #插入的文件
    query = {'filename': '02655.jpeg'}
    id=gfs.insertFile(file_db,filePath,query) #插入文件
    id=gfs.getID(file_db,query)
    (bdata,attri)=gfs.getFile(file_db,id) #查詢并獲取文件信息至內存
    gfs.write_2_disk(bdata,attri) #寫入磁盤
    # gfs.remove(file_db,id) #刪除數據庫中文件

總結

以上是生活随笔為你收集整理的Python 操作GridFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。