我有一个包含多个值的表,有时会重复。 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
答案 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
的列表。