卡桑德拉。默认列值

时间:2016-03-08 14:33:31

标签: python cassandra cqlengine

以下python cassandra driver

示例
class Users(Model):
    username = columns.Text(index=True, required=True)
    user_id = columns.UUID(index=True, default=uuid.uuid4)
    email = columns.Text(primary_key=True, required=True)
    passwd = columns.Text()
    salt = columns.Text()

以下列方式创建对象:

u = Users()
u.username = 'admin'
u.email = 'test@test.com'
u.password = u'test'   #This is property with setter
Users.create(**dict(u))

在这种情况下,我们会得到user_id:None而不是user_id:uuid.uuid4和相应的错误。

如何让default = uuid.uuid4以更少的痛苦工作?

UPD 我猜,它是由UUID列中的覆盖to_database方法引起的。哪个与基础to_database方法冲突。

UPD2 看起来很糟糕。步骤**dict(u)

发生错误

解决方案:

d = dict(u) 
del d['column_with_default_value']
Users.create(**d)

1 个答案:

答案 0 :(得分:2)

你做的工作比你需要的多得多。鉴于您的表格,这是您插入的方式:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="http://rawgit.com/JDMcKinstry/jQRSS/master/jQRSS.js"></script>

我在此验证了这一点:

Users.create(username="admin", email="test@test.com", passwd="test")