Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该如何附加到mongodb中类似文件的小对象?_Python_File_Mongodb - Fatal编程技术网

Python 我应该如何附加到mongodb中类似文件的小对象?

Python 我应该如何附加到mongodb中类似文件的小对象?,python,file,mongodb,Python,File,Mongodb,我需要一个mongodb接口,通过它我可以像对待标准python文件一样对待集合中的数据。这些将是相当小的文件(以KB为单位,最多),特别是我需要能够附加到这些所谓的文件中。() 我已经阅读了GridFS文档,尤其是。我能找到的唯一其他实现都是PHP。我并不是真的在寻找帮助来编写代码的任何细节,但这似乎是一项艰巨的任务 在Python2中是否有任何快捷方式或工具可以使实现类似文件的对象变得更容易 我是不是想知道有人已经这么做了 (我为什么要这样做?因为我在最后一个小时接到一个要求,要求我们部署一

我需要一个mongodb接口,通过它我可以像对待标准python文件一样对待集合中的数据。这些将是相当小的文件(以KB为单位,最多),特别是我需要能够附加到这些所谓的文件中。()

我已经阅读了GridFS文档,尤其是。我能找到的唯一其他实现都是PHP。我并不是真的在寻找帮助来编写代码的任何细节,但这似乎是一项艰巨的任务

  • 在Python2中是否有任何快捷方式或工具可以使实现类似文件的对象变得更容易
  • 我是不是想知道有人已经这么做了

  • (我为什么要这样做?因为我在最后一个小时接到一个要求,要求我们部署一个预先存在的应用程序,该应用程序在一个无法透明处理文件的多节点云环境中生成csv文件。)

    问题1:查看模块,尤其是。它通过一组相当合理的方法实现了所有类似文件的功能。

    您可以将数据作为二进制或文本存储在MongoDB集合中。但你会有两个问题:

  • 您必须实现其他代码期望实现的Python文件协议

  • 当您附加到“文件”时,文档将在MongoDB中增长,并且可能需要在磁盘上移动到有足够空间容纳较大文档的位置。移动文档很昂贵


  • 使用GridFS——文档不鼓励您使用静态文件,但对于您的情况,它是完美的,因为PyMongo已经为您完成了为MongoDB数据实现Python文件协议的工作。若要附加到GridFS文件,您必须读取该文件,使用附加数据保存新版本,然后删除以前的版本。但这并不比移动一个已增长的文档花费太多。

    IOBase非常有用,尽管它的readline(s)方法显然需要read()来输出字节,这意味着您必须手动处理字符编码(这并不有趣,但在Python中尤其如此)。