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()))})
但是有个问题,如果我在关系表中创建了一行新数据,并把旧数据的结束日期改成了一个早于当前的日期,属性parent却没有更新。
而且如果我重新加载资源行,旧的关系和旧的日期仍然会显示出来,所以我很确定这和映射器中的日期比较有关。
如果我把结束日期换成一个标志列(比如字符串或整数),然后用这个标志进行比较,就能得到正确的结果,但我还是想用日期。
希望能得到一些帮助。
谢谢,
理查德·洛佩斯
1 个回答
0
我其实找到了问题所在。关系是正常工作的。问题是通过把结束时间设置为像现在时间减去1秒这样的值来解决的,这样在SQLAlchemy真正刷新资源之前就发生了。我想这只是个毫秒级的细节问题。
理查德·洛佩斯