SQLAlchemy ORM(宣言型)を使用して、辞書内の一連の条件からプログラムでクエリを作成するにはどうすればよいですか?
以前にdictで収集されたいくつかの基準に一致するusersテーブルでこれらのレコードを検索したいと思います。どのフィールドが使用されるかを事前に知ることはできません。また、一部のフィールドが整数、一部が文字列、さまざまなフィールドが存在する可能性があることなどを処理できる必要があります。
例:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
2つのクエリが要求されたため、次のようになります。
q1_dict = {'id' : 177}
q2_dict = {'name' : 'Johnny', 'email' : 'johnny@somewhere.com'}
型を正しく処理したり、安全でない値を自動エスケープしたりしながら、キーがUserクラスの属性と一致するという事実に依存するだけで、これら2つのdictからクエリを作成できる簡単で一般的な方法はありますか?
私はこれをグーグルで調べ、SQLAlchemyのドキュメントを閲覧するのに数時間を費やしましたが、良い答え/例を見つけることができないようです。
解決:
だから、皆さんの助けを借りれば、解決策は次のように簡単に思えます:
User.query.filter_by(**q1_dict)
User.query.filter_by(**q2_dict)
...例で必要な2つのクエリを取得します。
私はあなたが提供したリンク、dagoofをすでに見ましたが、私の「python」は自分で解決策を見つけるのに十分なほど強力ではなかったと思います。:)