CqlEngine 模型 primary_key 未引发唯一错误

CqlEngine model primary_key not raising Unique Error

我在 flask 项目中使用 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': 'john@example.com', "first_name":'John', "last_name":'Doe'}
user = User(**user_data)
user.save()

以上代码根据需要正确创建了用户

user_data = {'email': 'john@example.com', "first_name":'Johnny', "last_name":'Daves'}
user = User(**user_data)
user.save()

现在上面的代码将现有用户 'john doe' 更新为 'johnny daves'。我期望得到的是 cqlengine 引发的错误 "user with email john@example.com already exists"

为什么没有报错?我做错了什么吗?

我设法找出答案,在查看代码后我注意到模型 class 有一个名为 _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解决了我的问题:)