如何从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 + "%"))