sqlalchemy: and_ и оценка функции даты в списке предложений - PullRequest
2 голосов
/ 12 января 2012

Я добавляю и выражаю предложения динамически в контроллере TurboGears, все работает нормально, пока я не попадаю в столбец даты, кажется, что он не может оценить выражение, так как я получаю «ProgrammingError» в TurboGears. Это код:

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 Ответ

2 голосов
/ 12 января 2012

вам нужно отправить конструкции выражений, просто потеряйте кавычки:

terms = [create_time<=DateTime('2012-01-01')]
records = DBSession.query(myrecords).filter(and_(*terms))

Как сказал кто-то другой, если вы на самом деле получаете строки из какого-то другого источника, вам нужно запустить их через eval (). Убедитесь, что эти строки не из внешнего мира! eval () необходимо использовать очень осторожно, чтобы предотвратить несанкционированное выполнение кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...