在pycassa中使用column_validators

时间:2011-11-23 15:27:46

标签: python cassandra pycassa

我正在尝试在column_validators中设置一些pycassa,但在使用某种超级库设置时遇到了麻烦:我似乎无法为包含的列设置验证器在一个超级列。我正在尝试像

这样的东西
cf.column_validators['supercolumn_name']['column_name'] = types.FloatType()

这不起作用,因为第二个字典尚未初始化,试图将其设置为类似

cf.column_validators['supercolumn_name'] = {}

也不起作用......所以关于如何处理这个问题的任何例子都很受欢迎,因为官方的pycassa doc没有显示任何关于此的详细信息。 此外,这些验证器似乎并不持久,因此是否有可能持续设置它们?

编辑:在查看pycassa的源代码后,我发现,对于验证器,您不必指定列所包含的超级列,所以

cf.column_validators['column_name'] = types.FloatType()

应该做的伎俩!如果验证者能以某种方式持久化仍然存在问题吗?

1 个答案:

答案 0 :(得分:4)

您可能不希望直接修改column_validators。这些是根据列族的column_metadata属性自动设置的。您可以使用pycassa中的'alter_column'命令修改Cassandra中的列族模式。然后将永久正确设置column_validators。

http://pycassa.github.com/pycassa/api/pycassa/system_manager.html#pycassa.system_manager.SystemManager.alter_column