0

非常简单的场景:

class User(Persistent):
  def __init__(self, username, email):
    self.username = username
    self.email = email

我想通过用户名将用户实例存储在 zodb 中,同时保持电子邮件的唯一性。

u1 = User(username="u1",email="u1@example.com")
zodb_container[u1.username] = u1

我使用用户名作为密钥来存储这个对象,所以它是唯一的。我的问题是如何保持电子邮件属性的唯一性?在对象数据库中是否有任何优雅的方法可以做到这一点?

4

1 回答 1

2

不。

ZODB 有点名不副实。它不是像 Postgres 或 MySQL 那样的“数据库”,而是一个具有约束和查询语言的数据库,以及人们认为数据库具有的所有东西。相反,它是一个持久对象存储。除了管理大于可用内存的工作集、处理事务并允许您在进程之间共享对象表示之外,ZODB 没有为您做任何 Python 的 pickle 模块不为您做的事情。它实际上是“超级泡菜”。

所以你的答案与你问同样的泡菜问题没有什么不同,真的。

于 2013-01-03T21:08:57.473 回答