以合理的方式打印 RethinkDB 查询的响应



我正在参加Yelp数据集挑战赛,我正在使用RethinkDB来存储每个不同数据集的JSON文档。

我有以下脚本:

import rethinkdb as r
import json, os
RDB_HOST =  os.environ.get('RDB_HOST') or 'localhost'
RDB_PORT = os.environ.get('RDB_PORT') or 28015
DB = 'test'
connection = r.connect(host=RDB_HOST, port=RDB_PORT, db=DB)
query = r.table('yelp_user').filter({"name":"Arthur"}).run(connection)
print(query)

但是当我在虚拟环境中的终端上运行它时,我得到这个作为示例响应:

<rethinkdb.net.DefaultCursor object at 0x102c22250> (streaming):
[{'yelping_since': '2014-03', 'votes': {'cool': 1, 'useful': 2, 'funny': 1}, 'review_count': 5, 'id': '08eb0b0d-2633-4ec4-93fe-817a496d4b52', 'user_id': 'ZuDUSyT4bE6sx-1MzYd2Kg', 'compliments': {}, 'friends': [], 'average_stars': 5, 'type': 'user', 'elite': [], 'name': 'Arthur', 'fans': 0}, ...]

我知道我可以使用 pprint 来漂亮的打印输出,但我不明白如何解决的一个更大的问题是以智能方式打印它们,比如不只是显示"..."作为输出的结尾。

有什么建议吗?

run 返回一个可迭代游标。迭代它以获取所有行:

query = r.table('yelp_user').filter({"name":"Arthur"})
for row in query.run(connection):
    print(row)

另一种方法是将rethinkdb.net.DefaultCursor(或光标)转换为熊猫数据帧

如文档 (https://rethinkdb.com/api/python/to_array) 所示,只需调用以下命令,可以将游标转换为列表,然后转换为数据帧:

pd.DataFrame(list(r.db('YOUR-DB').table('YOUR-TABLE').run()))

虽然它打破了一些 NO-SQL DB 逻辑,但由于 pandas 是基于结构化数据的,它仍然是可视化数据的好方法。

最新更新