最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在命令行中使用填充JSON文件蒙戈数据库在Python脚本

运维笔记admin13浏览0评论

在命令行中使用填充JSON文件蒙戈数据库在Python脚本

在命令行中使用填充JSON文件蒙戈数据库在Python脚本

page = open("npm.json", "r")
parsed = json.loads(page.read())

for i in parsed["dependencies"]:
    collection.insert_one(i)

你好,我想在一个JSON文件的读取和填充我与所谓ependencies.it一直给我和错误的行MongoDB的。我曾尝试插入,insert_one&insert_many无济于事。

以下是错误我得到

    File "database.py", line 43, in <module>
    collection.insert_one(i)
  File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 684, in insert_one
    common.validate_is_document_type("document", document)
  File "/usr/local/lib/python3.6/dist-packages/pymongo/common.py", line 453, in validate_is_document_type
    "collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "database.py", line 43, in <module>
    collection.insert_one(i)
  File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 684, in insert_one
    common.validate_is_document_type("document", document)
  File "/usr/local/lib/python3.6/dist-packages/pymongo/common.py", line 453, in validate_is_document_type
    "collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

JSON文件是节点的依赖关系的列表。我跑了一个节点项目的命令列表NPM。任何人可以帮助在此先感谢

回答如下:

它看起来像你的dependencies数据是dictionary。这意味着当您遍历它,你会得到的字符串(这是在这种情况下键)。

一个例子是,像这样:

my_entry = {'a': 1, 'b': 2}

for i in myentry:
    print(i)

# will print 'a' then 'b', not 1 then 2

我假设每个依赖是一个关键,你要插入的值。所以

# dictionary.values() will give you just the values
for v in parsed['dependencies'].values():
    if isinstance(v, dict):
        collection.insert_one(v)
    else:
        raise ValueError("object is not dictionary")

蒙戈只需要jsonbson条目,这是像字典。当你通过keys,你想插入式string,它不支持的对象

发布评论

评论列表(0)

  1. 暂无评论