我在烧瓶项目中使用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引发的错误,声称“用户已经存在电子邮件john@example.com”
为什么不引发错误?我做错了吗?
答案 0 :(得分: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
解决了我的问题:)