如何从SQL Alchemy过滤器中的字符串变量动态给定列名?


问题内容

我想在SQL炼金术筛选器中创建查询,但是列是(dynamic)变量中/在变量中指定。

原始查询:

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)

问题答案:

只需使用getattr标准python库函数即可通过名称获取属性:

col_name = 'subject'
db_session.query(Notice).filter(getattr(Notice, col_name).like("%" + query + "%"))