46

SQL Alchemy フィルターでクエリを作成したいのですが、列が変数内 (動的)/変数内で指定されています。

元のクエリ:

db_session.query(Notice).filter(Notice.subject.like("%" +query+ "%"))

次のようなクエリを実行したい:

col_name='subject'
db_session.query(Notice).filter(Notice.col_name.like("%" +query+ "%"))
col_name='status'
status=0
db_session.query(Notice).filter(Notice.col_name != 1)
4

4 に答える 4

72

getattr標準の Python ライブラリ関数を使用して、名前で属性を取得するだけです。

col_name = 'subject'
db_session.query(Notice).filter(getattr(Notice, col_name).like("%" + query + "%"))
于 2012-04-20T23:08:28.113 に答える
11

新しい sqlalchemy バージョンでは、次のようにする必要があります。

Notice.__table__.c[col_name]

そう:

(db_session
    .query(Notice)
    .filter(Notice.__table__.c[col_name].like("%" + query + "%")
)
于 2018-04-17T17:12:07.823 に答える