从SQLAlchemy KeyedTuple中获取特定字段的更好方法
我有一个叫做 SQLAlchemy KeyedTuple 的东西,它里面有好几个字段。我想要得到一个元组(或者,如果可以的话,得到一个 KeyedTuple),里面包含所有字段,除了我知道名字的两个字段。
现在我有以下代码,用来从 "row" KeyedTuple 生成一个“元组”列表(通过中间的 "dictRow" 字典,以及 KeyedTuple 的 _asdict 函数),并排除 "month" 和 "year" 这两个字段:
values = []
dictRow = row._asdict()
for key in row.keys():
if key not in ("year", "month"):
print key, type(row), dictRow[key]
values.append (dictRow[key])
顺便说一下,这个背景是我在进行查询时,确实需要排除一些字段,最终得到其余的字段。
1 个回答
1
更好这个说法是很主观的。不过,如果你真的想要一个 KeyedTuple
并且还想保持原始值的顺序,下面的代码应该可以实现:
values = KeyedTuple(*zip(*(
(row[i], k) for i, k in enumerate(row.keys())
if not k in ("year", "month")
)))
# or, just simple tuple:
values = tuple(row[i] for i, k in enumerate(row.keys())
if not k in ("year", "month"))
那你干脆在原始查询中把那些列排除掉不就行了吗?