10

SQLAlchemy を使用して Flask でインターフェイスを構築していますが、その一部は検索 API です。基本的に、先行入力はその値 (電子メールなど) を使用してサーバーを呼び出し、サーバーは以下のようなフィルターで .like を使用して SQLalchemy クエリを実行します。

q = session.query(User).filter(User.email.like('%'+term+'%')).all()

このクエリは実際には有用なものを何も返さず、最初の数文字の後には何も返しません。しかし、ハードコードされた用語を使用して同じクエリを実行すると、次のようになります。

q = session.query(User).filter(User.email.like('%mysearchterm%')).all()

それは完全に問題なく結果を返すので、用語を like() メソッドに入れる方法に問題がありますが、何が問題なのか本当にわかりません。用語は ajax POST から来ており、値はサーバー側にあり、.like() が正しく使用されていません。

「何も役に立たない」とは、最初に返される結果のセットが入力されている実際の用語とは関係がないことを意味します.3〜4を超える長さの用語の後、一致するアイテムがDBに存在するにもかかわらず、結果は返されません.

どんな助けでも大歓迎です。

4

1 に答える 1

7

問題が解決されました。このクエリは、関数の後半で制限とオフセットをクエリに適用するより大きなクエリ ビルダー関数の内部にありました。これは、制限とオフセットが、返された結果セットが空の結果の量よりも高かったためです。

これは、悪い人為的ミスと睡眠不足にまで及ぶ可能性があります。

于 2012-09-14T06:03:12.553 に答える