0

环境:带有 MySQL 5.7 的 Ubuntu 上的 DataJoint 版本 (0.12.9)

FreeTable 的概念很好。提供一个dj.conn()对象,full_table_name并创建一个您可以操作的表,独立于模块、虚拟模块和模式。

但是,此表的行为与其他用户表不同。例如,如果您使用两个不应有重叠结果的字典进行限制,则普通表将返回一个空集。但是,FreeTable 只返回第二个字典的结果。

例如:

FreeTable & {'exists': 1} & {'exists': 0}

应该返回一个空表,因为 and entry 不能同时为 1 和 0。

但是,在这种情况下,返回的表等效于:

FreeTable & {'exists': 0}

(同样{'exists': 1}在第二个位置查询返回FreeTable & {'exists': 1}

以下按预期工作并返回没有结果的表:

FreeTable & dj.AndList([{'exists': 1}, {'exists': 0}])

我相信发生这种情况的原因是因为FreeTable继承自Table而不是UserTable,元类属性在哪里生效。

我的问题是,它的目的是什么FreeTable,为什么它不能继承它的属性,UserTable所以它可能更有用?

4

0 回答 0