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