GAE 中数据级别的唯一约束
Posted
技术标签:
【中文标题】GAE 中数据级别的唯一约束【英文标题】:Unique Constraint At Data Level in GAE 【发布时间】:2011-02-07 06:59:56 【问题描述】:虽然one can enforce unique
check before putting
an object to store,但 GAE 似乎不支持 unique
约束。
但那是在 2009 年 1 月,那现在呢?我可以在模式创建期间对列指定unique
约束吗?即
class Account(db.Model):
name = db.StringProperty()
email = db.StringProperty() as unique # something like this
@classmethod
def create(cls, name, email):
a = Account(name=name, email=email)
a.put()
return a
【问题讨论】:
【参考方案1】:不,您仍然不能在架构创建期间指定唯一性。
这个问题位于here,以防你想看它。它还没有出现在他们的features on deck 列表中,所以看起来他们将首先开发其他功能。
【讨论】:
支持键名以外的唯一属性需要全局事务,因此我们不太可能很快添加它。目前,您可以通过键名或“后备”实体自行实现唯一性。【参考方案2】:您可以在应用引擎的数据存储as described here 中实现“唯一约束”。该示例以 Java 呈现,但您应该能够在 python 中应用相同的概念。
【讨论】:
以上是关于GAE 中数据级别的唯一约束的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework 6 Code First 方法 - 唯一约束不起作用
mysql RC 隔离级别下为什么需要 next key lock 来保证唯一索引有效性