查询表的不同值的id

时间:2014-05-23 19:16:24

标签: python sqlalchemy pyramid

我有一个包含多个值的表,有时会重复。 ex(1,'test',2,'test,3,'somevalue',4,'somevalue'等)

所以基本上我要做的是查询表中所有不同的值及其id。我是sqlalchemy的新手,似乎无法弄明白。

这就是我现在所拥有的:

reportTypes = DBSession.query(TDeviceType.sDeviceType).distinct()

其中sDeviceType是我的字符串值,ixDeviceType是我的id。但是,此查询仅返回不同的值。有什么建议?我可以为每个值做一个循环并获取id,但这似乎是一个坏主意

相当于我想做的事情:

select distinct(sDeviceType), ixDeviceType  FROM TDeviceType

1 个答案:

答案 0 :(得分:0)

如果我理解正确的问题,您需要每个值的ID列表。虽然可能有一种方法可以在纯SQLAlchemy中执行此操作,但在Python中执行此操作似乎很简单。

reportTypes = {}

for id, value in DBSession.query(TDeviceType.ixDeviceType, TDeviceType.sDeviceType):
    reportTypes.setdefault(value, []).append(id)

print reportTypes  # looks like {'test': [1, 2], 'somevalue': [3, 4]}

每个密钥都是不同的sDeviceType,每个值都是ixDeviceType的列表。