Sqlalchemy - Можем ли мы использовать сравнение дат в определении отношений?
Я определил этот маппер:
mapper(Resource, resource_table,
properties = {'type' : relation(ResourceType,lazy = False),
'groups' : relation(Group, secondary = model.tables['resource_group'],
backref = 'resources'),
'parent' : relation(Relation, uselist=False, primaryjoin =
and_(relation_table.c.res_id == resource_table.c.res_id,
relation_table.c.end_date > datetime.now())),
'children' : relation(Relation, primaryjoin =
and_(relation_table.c.parent_id == resource_table.c.res_id,
relation_table.c.end_date > func.now()))})
Но по какой-то причине, если я создаю новую строку в таблице отношений и меняю end_date старой строки в отношении на старую дату, родительское свойство не обновляется. Также, если перезагрузить строку ресурса, отобразится старое отношение со старой датой, так что я почти уверен, что это связано со сравнением дат в маппере.
Если я заменяю end_date строкой или целым числом столбца флага и сравниваю флаг, я получаю правильное поведение, но хочу использовать даты.
Любая помощь приветствуется.
Спасибо,
Ричард Лопес
1 ответ
Я действительно нашел, что было не так. Отношение действительно работает. Проблема была решена путем установки значения end_date, например, datetime.now() - 1 секунда, поэтому это происходит до того, как ресурс фактически обновляется SQLAlchemy. Полагаю, проблема в миллисекундах.
Ричард Лопес