2010-08-10 71 views

回答

4

沒有。它會工作得很好。

+0

非常感謝:) – mauzepeda 2010-08-10 20:50:47

+1

你可以引用任何建議這可以正常運行的SQLAlchemy文檔嗎? – DuneBug 2013-04-03 23:50:39

+1

@DuneBug我看不出爲什麼這會是一個問題。 Sqlalchemy本身不會覆蓋聲明性基礎的特殊方法。 – nosklo 2013-04-08 17:54:54

2

也許,這取決於比較功能的實現。

您可以選擇使用__eq____cmp__時與other對象比較,因爲SQLAlchemy的可以用一些符號,如NEVER_SET不具有相同類型的比較你的對象要小心。看看這個SQLAlchemy的方法:

def get_all_pending(self, state, dict_): 
    if self.key in dict_: 
     current = dict_[self.key] 
     if current is not None: 
      ret = [(instance_state(current), current)] 
     else: 
      ret = [(None, None)] 

     if self.key in state.committed_state: 
      original = state.committed_state[self.key] 
      if original not in (NEVER_SET, PASSIVE_NO_RESULT, None) and \ 
       original is not current: 

       ret.append((instance_state(original), original)) 
     return ret 
    else: 
     return [] 

original not in (NEVER_SET, PASSIVE_NO_RESULT, None)線可能會引發錯誤,如果比較不檢查類型的平等第一,或者對於要在比較中使用的字段的存在

作爲解決方案,您應該考慮不同的類型。

也避免重寫__cmp__並使用rich comparison operators instead

+0

好趕上!這個很重要。 – 2016-06-25 20:27:03