我正在实现一些公司及其子公司数据库的搜索功能。对于每个公司,可能有多个子公司或无子公司。每个子公司都有一个公司id列,该列将其链接到母公司表的id列。
以下是如何按名称搜索公司的示例:
def search_by_company_name(name):
company_search = session.query(Company.name).filter(Company.name.like('%{}%'.format(name)))
return company_search.all()
我想要的是,通过搜索公司的名称,而且可以查询任何可能有类似名称的子公司的名称,从而查询公司。我现在的情况是:
^{pr2}$我的方法的问题是,如果某个母公司没有子公司,那么查询将不会返回任何内容,即使名称搜索与公司表中的一行匹配。
例如:
^{pr3}$然而
^{pr4}$我确信第二个函数返回[]是因为我的数据库中没有Accenture的子函数,所以谓词^{cd1>}基本上删除了公司表中已经找到的任何结果。我想解决办法可能是做一些像左连接这样的事情,但我已经有一段时间没有任何运气了。
在SQLAlchemy中这样做的查询是否有一个好方法,当给定公司的子表中没有匹配的行时,仍然返回在某个表中找到的所有行?
您可以考虑实现outerjoin,而不是严格的筛选条件,例如:
相关问题 更多 >
编程相关推荐