Сохраняйте и читайте файлы в GridFS - PullRequest
0 голосов
/ 19 февраля 2019

Я довольно новичок в MongoDB и Pyhton, но у меня есть вопрос к следующей проблеме.

Я хотел бы сохранить некоторые файлы данных в gridfs, а затем прочитать сохраненный файл.Вставка работает, потому что я получаю Objectid, а также «вижу» файл в БД.

#Insert external File into DB
def dbInsertFile():
    db = MongoClient().TestDB
    fs = gridfs.GridFS(db)
    fileID = fs.put(open(r'../2_134_1_2_134_022_RTP05.mat_final.csv', 'rb'))
    print(fileID)

Дает ObjectId: 5c6bcc8562b3d50742110562

Так же, как я подхожу к строкегде я хочу получить файл с fileID

def dbReadFile(fileID):
    db = MongoClient().TestDB
    fs = gridfs.GridFS(db)
    file = fs.get(fileID)
    print(file)

я получаю сообщение:

gridfs.errors.NoFile: no file in gridfs collection Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'TestDB'), 'fs.files') with _id '5c6bcc8562b3d50742110562'

Я что-то упустил, чтобы фактически сохранить файл в базе данных?

Надеюсь, кто-нибудь может мне помочь: -)

кстати ... где я могу найти ** kwargs в документации по монго, которые можно использовать для функции put?

Поздравления Алекса

1 Ответ

0 голосов
/ 19 февраля 2019

Экземпляр GridOut необходим для локальной загрузки изображения.Используйте 'get_last_version' вызов метода, если вы извлекаете изображение по его имени.

gout = self.fs.get_last_version('required filename')

Пишите данные локально.Откройте файл в режиме записи.

fout = open('filename of ur choice', 'wb')
fout.write(gout.read())
fout.close()
gout.close()  
...