【发布时间】:2018-08-16 07:15:06
【问题描述】:
是否可以在不使用 sqlalchemy 中的“会话”类的情况下使用 distinct 函数?为什么或者为什么不?我在这里找到的答案:https://stackoverflow.com/a/35718413/10210394 似乎应该可以工作,但对我不起作用。请参见下面的示例:
class Example(db.Model):
title = db.Column(db.String(140))
extra = db.Column(db.String(140))
e1 = Example(title='foo', extra='bar')
e2 = Example(title='hoo', extra='bar')
db.session.add_all([e1, e2])
db.session.commit()
test = []
for value in Example.query.distinct(Example.extra):
test.append(value.extra)
print(len(test))
...2
结果应该是 1 而不是 2。查看 distinct() 的文档,我觉得这应该可行。我错过了什么?
【问题讨论】:
-
为什么这里的结果会是1?
Example.extra有两个不同的值:'bar'和'raa'。顺便说一句,这段代码没有运行,它有错误。最好在将代码发布到此处之前对其进行测试。 -
@zvone 对此感到抱歉,我正在从我的项目中复制代码并试图尽可能地简化它。现在应该修好了。我一定会在下次提交之前运行它。额外的变量应该是相同的(Example.extra: 'bar' and 'bar'),结果仍然是 2。
-
你会在这里找到答案:stackoverflow.com/questions/17223174/…
-
@IljaEverilä 谢谢!
标签: python sqlite flask sqlalchemy distinct