我的烧录代码中有两行正在进行dbase调用。这一行:
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对象!可能会发生什么?
答案 0 :(得分:2)
假设articles
是一个列表,添加到列表基本上等同于articles.extend(other_iterable)
。 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()