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
解决了我的问题:)
我在 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
解决了我的问题:)