我尝试在小马 orm 中使用 order_by 聚合实现一个简单的选择:
所以,我尝试了一些方法:第一种方法引发错误消息:
sel = select((f.Name, f.id) for f in Firma).order_by(Firma.Name)
这样,我从 python 收到错误消息:“NotImplementedError:按属性排序仅限于返回简单对象列表的查询。尝试使用其他形式的排序(按元组元素编号或完全成熟的 lambda expr)”
第二种方式,按顺序选择是否可以正常工作,但在我的字典中插入会破坏disered选择顺序
for f in Firma.select(lambda f: f.Name) \
.order_by((Firma.Name)):
dic[f.Name] = f.id
print ("=== f.Name", f.Name)
dic[f.Name] = f.id
print(" === dic[f.Name]", dic[f.Name])
结果如下:
=== f.Name A
=== dic[f.Name] 10
=== f.Name B
=== dic[f.Name] 11
=== f.Name C
=== dic[f.Name] 12
=== f.Name Neckermann
=== dic[f.Name] 7
=== f.Name Otto
=== dic[f.Name] 6
=== f.Name Quelle
=== dic[f.Name] 3
=== f.Name Testfirma
=== dic[f.Name] 9
=== f.Name The Pearlfactory
=== dic[f.Name] 8
但是字典是:
dic {'Testfirma': 9, 'Quelle': 3, 'C': 12, 'The Pearlfactory': 8, 'B': 11, 'Otto': 6, 'A': 10, 'Neckermann': 7}
现在的问题是:如何在没有此错误消息的情况下使用 order_by 聚合的第一种方式。或者,我如何将公司 id 和公司名称的值放在排序后的字典中
我希望有人能理解我糟糕的英语;)
问候
尼塞尔