sqlalchemy:and_和子句列表中日期函数的评估

时间:2012-01-12 00:19:31

标签: python sqlalchemy

我在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')))

我在俯瞰什么?

由于

1 个答案:

答案 0 :(得分:2)

你需要发送表达式构造,只是丢失引号:

terms = [create_time<=DateTime('2012-01-01')]
records = DBSession.query(myrecords).filter(and_(*terms))
像其他人说的那样,如果你实际上从其他来源获取字符串,你需要通过eval()运行它们。确保这些字符串不是来自外界!需要非常小心地使用eval()以防止未经授权的代码执行。