Pony ORM-为什么在使用exists命令时会出现断言错误



我有一个相对复杂的结构,我一直试图得到一个最小的工作示例,但我一直没能做到。

以下是我的表格结构:

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_

这更像是问题回复,而不是问答。这是"小马中的虫子"。我们已经在这里修复了感谢您的报道。

最新更新