ani*_*ils 30 python sqlalchemy
我想在sql炼金术过滤器中创建查询,但是在变量/变量中指定的列是(动态的).
原始查询:
db_session.query(Notice).filter(Notice.subject.like("%" +query+ "%"))
Run Code Online (Sandbox Code Playgroud)
我想做这样的查询:
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)
Run Code Online (Sandbox Code Playgroud)
van*_*van 50
只需使用getattr标准python库函数按名称获取属性:
col_name = 'subject'
db_session.query(Notice).filter(getattr(Notice, col_name).like("%" + query + "%"))
Run Code Online (Sandbox Code Playgroud)
在较新的 sqlalchemy 版本中,应该这样做:
Notice.__table__.c[col_name]
Run Code Online (Sandbox Code Playgroud)
所以:
(db_session
.query(Notice)
.filter(Notice.__table__.c[col_name].like("%" + query + "%")
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15126 次 |
| 最近记录: |