【发布时间】:2018-01-06 01:11:18
【问题描述】:
AFAIU 和文档中,RealDictCursor 是一个专门的 DictCursor,它只允许从键(又名列名)访问列,而 DictCursor 允许从键或索引号访问数据。
我想知道如果 DictCursor 提供更大的灵活性,为什么要实施 RealDictCursor?性能方面(或内存方面)是否如此不同(我想支持 RealDictCursor ......)?
换句话说,RealDictCursor 用例与 DictCursor 分别是什么?
【问题讨论】:
-
事实上它们并不像文档描述的那样相似:访问是相似的,但是如果你 json.dumps(your_request),DictCursor 不会显示键,RealDictCursor 会显示它们。
-
我假设如果您的查询返回大量行,那么每行的真实字典将是一个巨大的开销,因为它存储的是每行上的每个值的键(列名),而不是的常规元组,它具有较小的内存占用。我个人认为命名变量和命名数据库列比假设数据库表中的列的顺序和数量永远不会改变,并且总是尝试使用名称而不是索引序数更可取。 dictcursor 似乎介于两者之间,通过单独存储索引到列名映射来节省每行空间。
标签: python python-3.x postgresql psycopg2