CqlEngine模型primary_key没有引发Unique Error

问题描述 投票:0回答:1

我在一个烧瓶项目中使用CassandraDB

我创建了一个用户模型,其中包含电子邮件作为primary_key。

class User(Model):
    __table_name__ = 'user'

    user_id = UUID(primary_key=True)
    email = Text(max_length=120, primary_key=True)
    first_name = Text()
    last_name = Text()

python代码:

user_data = {'email': '[email protected]', "first_name":'John', "last_name":'Doe'}
user = User(**user_data)
user.save()

上面的代码正确地根据需要创建用户

user_data = {'email': '[email protected]', "first_name":'Johnny', "last_name":'Daves'}
user = User(**user_data)
user.save()

现在上面的代码将现有的用户'john doe'更新为'johnny daves'。我期待得到的是cqlengine引发的错误,声称“用户已经存在电子邮件[email protected]

为什么不提出错误?难道我做错了什么?

flask cassandra-3.0 cqlengine
1个回答
0
投票

我设法找出答案,在完成代码之后,我能够注意到Model类有一个名为_if_not_exists = False的属性,如果设置将引发LWTException,表明该对象已存在于数据库中而您无法创建它。

class User(Model):
    __table_name__ = 'user'
    _if_not_exists = True  

    user_id = UUID(primary_key=True)
    email = Text(max_length=120, primary_key=True)
    first_name = Text()
    last_name = Text()

如上图所示在模型中设置_if_not_exists = True解决了我的问题:)

© www.soinside.com 2019 - 2024. All rights reserved.