2015-11-19 99 views
1

我的瓶子代码中有两行正在进行dbase调用。此行:从sqlalchemy query.filter返回而不是模型对象的Basequery对象

articles += Entries.query.filter(and_(Entries.id == article.article_id, Entries.tags.like(search_string))) # @UndefinedVariable 

返回Models.Entries对象。

鉴于这一行:

articles.append(Entries.query.filter(Entries.id == 3)) # @UndefinedVariable 

返回Basequery对象。我需要一个Models.Entries对象!可能会发生什么?

回答

1

假设articles是一个列表,添加到列表基本上相当于articles.extend(other_iterable)。 A Query是可迭代的:迭代它,返回结果。

在第二个示例中,您未执行查询,而是将它追加到列表中。等效代码+=将使用extend,不append

articles.extend(Entries.query.filter_by(id=3)) 

它看起来像你通过查询ID单品。不是执行多个查询并收集结果,而是通过ID列表执行一个查询并直接得到结果。

articles = Entries.query.filter(Entries.id.in_([1, 2, 3, 4])).all()