我有一个相对复杂的结构,我一直试图得到一个最小的工作示例,但我一直没能做到。
以下是我的表格结构:
class Table1(_db.Entity):
name = Required(str)
table2s = Set('Table2')
class Table2(_db.Entity):
height = Required(Decimal)
length = Required(Decimal)
table1 = Optional('Table1')
composite_key(height, length, table1)
with db_session:
Table2(height=2, length=1)
try:
Table2.exists(height=2, length=1) # This will throw an error
except AssertionError:
Table2.exists(height=2, length=1) # This works
在表2中,当我有相当于composite_key(height, length)
的代码时,代码工作得很好。但是,当我有compmosite_key(height, length, table1)
时,当执行exists语句时,它会返回一个AssertionError
。
我浏览了一些源代码,并在以下几行中找到了一些问题:
我的版本是0.7.6,安装了pip install pony
1875年:函数db_update_composite_index
中的assert prev_vals != new_vals
这是因为在第4151行中:obj = cache_index.get(pkval)
拉不正确(?(。
obj._dbvals_
没有为None的条目。
然后在第4591行中,如果old_dbval = get_dbval(attr, NOT_LOADED)
old_dbval默认为NOT_LOADED,则导致不删除属性。
这导致在线路4616if any(attr in avdict for attr in attrs)
中进入if statement
环路
并且由于CCD_ 13 而在CCD_
这更像是问题回复,而不是问答。这是"小马中的虫子"。我们已经在这里修复了感谢您的报道。