0
很簡單塞納里奧:獨特的鍵/屬性/屬性在ZODB
class User(Persistent):
def __init__(self, username, email):
self.username = username
self.email = email
我想通過自己的用戶名的用戶實例存儲在ZODB,同時保持電子郵件獨一無二的。
u1 = User(username="u1",email="[email protected]")
zodb_container[u1.username] = u1
我使用用戶名作爲密鑰來存儲這個對象,所以它將是唯一的。我的問題是如何保持電子郵件屬性的獨特性?在對象數據庫中有沒有優雅的方法來做到這一點?
嗨克里斯,非常感謝你!我想知道你什麼時候符合這樣的要求,你如何解決這個問題,以及推薦的做法是什麼?我現在有兩個選擇:1,將ZODB與真正的關係數據庫結合起來。 2,在ZODB中創建另一個字典並使用電子郵件地址作爲密鑰。所以我維護兩本詞典以保持用戶名和電子郵件地址的唯一性。 – Xiong
假設我選擇第二個選項,我還有另一個問題:如果我在兩個字典中兩次保存相同的用戶對象,ZODB會保留該用戶對象的兩個副本還是隻保留一個副本?如果ZODB保留兩個副本,那麼我必須保存一個鍵(User.username)而不是整個User對象。順便說一句,我想我最好馬上做一個實驗。 – Xiong
ZODB只保留用戶對象的一個副本。所以我打算使用兩個字典來保持這兩個屬性的唯一性。 – Xiong