如何处理sqlalchemy.util._collections.result?

时间:2018-01-12 18:40:49

标签: python sqlalchemy

我只想执行sql:

select distinct price from items

所以我写下面的sqlalchemy代码:

result_list = session.query(func.distinct(items.price)).all()

在我的数据库中,只有2个不同的价格,因此结果应为100200

但是,它会返回sqlalchemy.util._collections.result的列表。 但我想要的是一个int列表,例如[100, 200]

当然我可以这样做:

int_list = [ x.price for x in result_list ]

但这"解决方法"太难看了。

那么有一个像to_base_type这样的函数,这样我就可以编写这样的代码:

int_list = session.query(func.distinct(items.price)).to_base_type()

非常感谢有人能帮助我

4 个答案:

答案 0 :(得分:0)

您可以使用结果类的_asdict()方法。 一个例子是

def get_dict_list_from_result(result):
    list_dict = []
    for i in result:
        i_dict = i._asdict()  # sqlalchemy.util._collections.result , has a method called _asdict()
    list_dict.append(i_dict)
    return list_dict

答案 1 :(得分:0)

看着这个答案:https://stackoverflow.com/a/13118371/8953378

您可以使用:

cpuid.7.ebx = "----:----:---1:----:----:----:----:----"

答案 2 :(得分:0)

返回的结果是KeyedTuple,因此,当您遍历它时,可以这样写:

result_list = session.query(items.X, items.Y, func.distinct(items.price)).all()
for (x, y, price) in result_list:
 ... now just use x,y and price as regular variables ....

请注意,_asdict()不是有序的字典……(以防对某人很重要)

答案 3 :(得分:-1)

select

P.S。:还应该返回primary_key