2011-07-24 10 views
2

私はSQLAlchemyを使用するピラミッドWebアプリケーションを開発中です。
私は、7000の米国の大学のデータベースと、大学を入力するフロントエンドの入力ボックスを持っています。入力ボックスはjQuery UIのオートコンプリートを使用します。オートコンプリートは後でAJAXでピラミッドアプリを呼び出してオプションのリストを取得します。次のように
私は用語に基づいて結果を取得しています方法は次のとおりです。これはかなりまともな作品 session.query(University).filter(University.name.like('%' + term + '%')
、しかし、私は、次の機能をサポートしたいと思います - ユーザーがUCLAに入ったとき、私はカリフォルニアの大学を見つけるしたいと思います - ロサンゼルス。 FSU - フロリダ州立大学など。
大学全体のリスト(〜8000)を反復し、名前が一致するかどうかを手動で決定する以外に、sqlalchemyのクエリ/フィルタに一致する関数を指定する方法はありますか?SQLAlchemy検索アルゴリズム

ありがとうございます!

答えて

1

SQLAlchemyは基本的にSQLのフロントエンドです。クエリがSQLとして簡単に表現できるものではない場合は、手動で反復処理することに比べて、その方向でそれを歪ませることによる利益の見込みはありません。それでも、行全体を引き出して比較する必要がありますあなたがそれをするのか、それをするのかに関わらず。

Xを検索する場合は、Xから派生するYを検索し、Yを最初に検索してから、OR operatorを使用して両方を照会する必要があります。

ie。しないでください。

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を。