当我们使用 DB API 2.0 获取数据时,cur.execute("select * from db.table")我们会得到一个游标,它看起来像元组列表的生成器对象。
而在 pymongo 中,当我们获取时,我们将其作为字典列表获取。我想实现这样的目标。
我不需要获取元组列表,而是想要字典列表或命名元组。
我相信从效率的角度来看这是有意义的,因为模式已经定义,所以不需要为每条记录发送它。
目前我正在使用的解决方法是:
cur.execute("select * from db.table")
columns = cur.columns_with_types
data = cur.fetchall()
df = pd.DataFrame(data,columns=[tuple[0] for tuple in columns])
data_reqd = df.to_dict('records')
Run Code Online (Sandbox Code Playgroud)
当查询返回大量数据时,此方法的公平性很差。
解决方法 1:使用fetchmany(size=block_size),但它似乎不是一种优雅的做事方式。
解决方法 2:这似乎是一种更好的处理方式。
cur.execute("select * from db.table")
columns = cur.columns_with_types
for tup in cur:
row = dict(zip(columns, tup))
# use row
Run Code Online (Sandbox Code Playgroud)
有什么好的办法处理这个问题吗?对问题的任何改进表示赞赏。