为什么得到的结果是8而不是2?因为您得到的查询是 笛卡尔积 (8 = 2 * 2 * 2)。
反过来,发生这种情况是因为您 与之间 有
dynamic关系,该关系 是
从两个表(和)中
inheritance创建的
select,
comment并且
post_comment它们之间没有任何谓词。
为什么第一个查询只返回
2?好吧,因为您要查询实际的映射实例,所以它
sqlalchemy很聪明,可以过滤出重复项,尽管基础
SQL语句也确实返回了8行。
join在查询中添加来解决此问题:
query = d1.comments.join(PostComment).filter(PostComment.ready == True)



