gridfs - спецификация для хранения больших объектов в MongoDB

GridFS

class gridfs.GridFS(database, collection='fs')

Объект для работы с GridFS

  • database - pymongo.database.Database
  • collection - опционально, коллекция в БД
delete(file_id)

Удаляет файл из бд

Warning

если при удалении, кто-то попытается прочесть файл, то он может прочитать и не весь файл

Note

Удаление не существующего файла не считается ошибкой

exists(document_or_id=None, **kwargs)

Булево, файл существует

>>> fs.exists(file_id)
>>> fs.exists({"_id": file_id})
>>> fs.exists(_id=file_id)
>>> fs.exists({"filename": "mike.txt"})
>>> fs.exists(filename="mike.txt")
>>> fs.exists({"foo": {"$gt": 12}})
>>> fs.exists(foo={"$gt": 12})
find(*args, **kwargs)

Возвращает курсор gridfs.grid_file.GridOutCursor итератор по найденным файлам.

  • filter - опционально, фильтр для поиска
  • skip - опционально, количесвто файлов которые надо пропустить
  • limit - опционально, количесвто документов которые надо вернуть
  • no_cursor_timeout - опционально, булево, если ложно (по умолчанию) то курсов закрывается по истечении 10 минут неактивности сервера БД.
  • sort - опционально, список ключей для сортировки
for grid_out in fs.find({"filename": "lisa.txt"}, no_cursor_timeout=True):
   data = grid_out.read()

most_recent_three = fs.find().sort("uploadDate", -1).limit(3)
find_one(filter=None, *args, **kwargs)

Возвращает один файл по условию, аргументы аналогичны find()

>>> file = fs.find_one({"filename": "lisa.txt"})
get(file_id)

Возвращает файл по идентификатору

get_last_version(filename=None, **kwargs)

Возвращает последнюю версию файла

get_version(filename=None, version=-1, **kwargs)

Возвращает файл указанной версии

Возбуждает gridfs.errors.NoFile если файл не найден

list()

Список всех файлов БД

new_file(**kwargs)

Возвращает gridfs.grid_file.GridIn, ново созданный файл в БД

put(data, **kwargs)

Кладет новую информацю в файл

  • data - строка или файлобый объект
try:
   f = new_file(**kwargs)
   f.write(data)
finally:
   f.close()