Sqlalchemy - 我们可以在关系定义中使用日期比较吗?

时间:2010-03-05 03:45:57

标签: python database orm sqlalchemy mapper

我定义了这个映射器:

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并对标志进行比较,我会得到正确的行为,但我确实想要使用日期。

欢迎任何帮助。

谢谢,

Richard Lopes

1 个答案:

答案 0 :(得分:0)

我实际上发现了什么问题。 这种关系实际上是有效的。 通过将end_date设置为datetime.now() - 1秒,解决了这个问题,因此它在SQLAlchemy实际刷新资源之前发生。 我想是一个毫秒的问题。

Richard Lopes