2011-07-24 120 views
2

我正在使用SQLAlchemy的金字塔web应用程序。
我有一个7000美国大学的数据库,并在前端输入框输入一所大学。输入框使用jQuery UI的自动完成,后来使用AJAX调用我的金字塔应用程序以获取选项列表。
我基于术语取结果的方式如下: session.query(University).filter(University.name.like('%' + term + '%')
然而,这工作很体面,我想支持以下 - 当用户进入加州大学洛杉矶分校,我想找到加州大学 - 洛杉矶。对于FSU - 佛罗里达州立大学等等。
除了迭代我的整个大学列表(〜8000),并手动确定名称是否匹配,有没有一种方法来指定匹配函数sqlalchemy的查询/过滤器?SQLAlchemy搜索算法

谢谢!

回答

1

SQLAlchemy本质上是SQL的前端。如果你的查询不是很容易用SQL来表示的话,那么你不太可能会看到相对于手动迭代而试图在这个方向上扭转它的任何好处 - 它仍然需要拉出一整行并比较它,无论你做它或它做到了。

但是,如果当您搜索X时,还需要搜索可以从X派生的Y,请首先查找Y,然后使用OR operator查询两者。

即。不要做:

get all rows, and for each row, see if it matches X or Y

,而不是做:

get all rows that match X plus all rows that match Y