我在turbogears控制器中动态添加和子句,一切正常,直到我到达日期列,似乎它无法评估表达式,因为我在turbogears中得到了“ProgrammingError”。这是代码:
terms = ["create_time<=DateTime('2012-01-01')"]
records = DBSession.query(myrecords).filter(and_(*terms))
如果我这样做,它可以工作:
records = DBSession.query(myrecords).filter(and_(create_time<=DateTime('2012-01-01')))
我在俯瞰什么?
由于
答案 0 :(得分:2)
你需要发送表达式构造,只是丢失引号:
terms = [create_time<=DateTime('2012-01-01')]
records = DBSession.query(myrecords).filter(and_(*terms))
像其他人说的那样,如果你实际上从其他来源获取字符串,你需要通过eval()运行它们。确保这些字符串不是来自外界!需要非常小心地使用eval()以防止未经授权的代码执行。