0

我在烧瓶项目中使用 CassandraDB

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

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()

蟒蛇代码:

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 引发的错误,指出“使用电子邮件 john@example.com 的用户已经存在”

为什么它没有引发错误?难道我做错了什么?

4

1 回答 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模型中的设置解决了我的问题:)

于 2018-01-03T06:42:35.840 回答