以下示例来自 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 我猜,这是由覆盖 to_database
引起的UUID 列中的方法。与基数冲突 to_database
方法。
UPD2 看起来情况很糟糕。步骤 **dict(u)
解决方案:
d = dict(u)
del d['column_with_default_value']
Users.create(**d)
最佳答案
您所做的工作超出了您的需要。给定您的表格,这就是您插入的方式:
Users.create(用户名=“admin”,电子邮件=“test@test.com”,密码=“test”)
我已经在这里验证了这一点:
在[16]中:Users.create(用户名=“admin”,电子邮件=“test@test.com”,passwd=“test”)
输出[16]:用户(用户名='admin',user_id=UUID('183d542d-c469-448d-9d14-d3614f727cef'),电子邮件='test@test.com',passwd='test',盐=无)
关于python - Cassandra 。默认列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870127/