在pymongo中输出的漂亮打印

时间:2015-12-28 12:26:27

标签: mongodb python-3.x pymongo

我正在使用 pymongo 驱动程序与Mongodb一起使用Python。每当我在python shell中运行查询时,它都会返回一些非常难以理解的输出。我在mongo shell中使用了.pretty()选项,它以结构化的方式提供输出。

我想知道 pymongo 中是否有类似pretty()的方法,它可以以结构化方式返回输出?

5 个答案:

答案 0 :(得分:6)

  

我想知道PyMongo中是否有像pretty()这样的方法

PyMongo没有提供此类方法。它仅在shell中可用。 您需要使用pprint模块中的pprint功能。

答案 1 :(得分:2)

实际上你也可以自己编程,如:

db = connection.[dbname]

collection = db.[yourcollectionname]

for col in collection.find({}):

    for keys in col.keys(): 

        print ('{', keys, ":" , col[keys] , '}' )

我认为这会有所帮助或将其视为一种选择。

答案 2 :(得分:0)

没有直接的方法以结构化的方式打印出pymongo。

因为出自pymongo是dict

print(json.dumps('带有pymongo查询的变量'))

这将符合您的目的我认为

答案 3 :(得分:0)

我对此也有点陌生,但我可能已经为正在寻找的人找到了可行的答案。我使用的库是 pymongobsonjsonfrom bson import json_utilfrom bson.json_util import dumps, loads

你想打印(或返回)的地方试试:

print(loads(dumps(stringToPrint, indent=4, default=json_util.default)))

如果您的数据已经在使用负载,则在此语句中您将不需要负载。

如果您想使用 return,请省略第一个括号。

示例:

return json.loads(json.dumps(string, ..... )

如果您导入了加载和转储,则可以省略 json.

我还没有尝试过(因为这对我很有用)来改变“缩进”值,但如果您不喜欢输出的外观,请尝试更改它。

答案 4 :(得分:-1)

这可能取决于你的IDE,而不是pymongo本身。 pymongo负责操纵数据并与mongodb通信。我正在使用Visual Studio和PTVS,我有Visual Studio提供的这些选项。 PyCharm也是IDE的一个很好的选择,它允许您以格式化结构观察代码变量和JSON。