2016-08-12 2 views
0

У меня есть стол под названием DR с колонками dag_id, execution_date и run_id. Я хотел бы найти конкретную запись, которая, как я знаю, существует в таблице.SqlAlchemy не удалось найти запись

В моих модульных тестах я создаю одну запись в таблице, а затем попытаюсь найти ее снова.

tmp = session.query(DR).filter(DR.dag_id == self.dag_id).first() 

print(self.dag_id == tmp.dag_id) 
print(self.execution_date == tmp.execution_date) 
print(self.run_id == tmp.run_id) 

Все три оператора печати печать верно, но тогда, когда выполнить следующий запрос, никаких записей не найдено:

session.query(DR).filter(
    DR.dag_id == self.dag_id, 
    DR.execution_date == self.execution_date, 
    DR.run_id == self.run_id 
).first() 

Кто-нибудь знает, почему это происходит?

Спасибо!

ответ

1

Вы попробовали следующий запрос?

session.query(DR).filter(
    DR.dag_id == self.dag_id, 
    DR.run_id == self.run_id 
).first() 

Если это работает проблема может быть питон DateTime равенство оценивается по-разному для вашей даты и времени базы данных равенства.

+0

Хороший улов, я пробовал фильтрацию только с помощью 'DR.execution_date == self.execution_date' и не получал записей, поэтому в сравнении даты должно быть какое-то странное поведение. – thenorm

Смежные вопросы