使用Python保存存储在Mongodb GridFS中的pdf文件

时间:2015-09-01 19:08:17

标签: python mongodb pymongo gridfs

我已将一些PDF,PNG文件上传到mongodb的本地实例。错误地我删除了这些文件,我无法再使用常规恢复选项恢复它们。但是,它们位于我当地的mongodb数据库中。如何在计算机上以原始格式保存它们?

我知道以下内容:

import pymongo as pym
import gridfs

def connectToDb():
    client = pym.MongoClient('mongodb://localhost:27017/')
    db = client.questionbank
    collectn = db.questionbank
    fs = gridfs.GridFS(db)
    return db, collectn, fs

db, collectn, fs = connectToDb()

filelist = list( db.fs.files.find({}, {"_id": 1, "filename": 1}) )
fileid = filelist[0]['_id']
fobj = fs.get(fileid)

## I don't know what to do after this. I think I cannot use read since I don't 
## want the string. I want to save the pdf file as a pdf file.

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

好的,我自己想出来了。它可以通过以下方式完成:

在上面的代码中添加以下行:

f = open('tempfigfile.pdf', 'wb')
f.write(fobj.read())
f.close()

这会将文件保存为tempfigfile.pdf。

答案 1 :(得分:0)

此代码会将所有文件从mongodb gridfs保存到本地文件夹。

i=0 
cursor=fs.find()
while(i < cursor.count()):
    fi=cursor.next()
    with open("C:\\localfolder\\"+fi.filename,"wb") as f:
        f.write(fi.read())
        f.closed
        i=i+1