2

我正在尝试设置一些column_validatorspycassa但在使用某种超级列设置时遇到了麻烦:我似乎无法为超级列中包含的列设置验证器。我正在尝试类似的东西

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

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

cf.column_validators['supercolumn_name'] = {}

也不起作用......因此,任何有关如何处理此问题的示例都值得赞赏,因为官方 pycassa 文档没有显示任何更详细的信息。此外,这些验证器似乎不是持久的,那么有没有可能持久地设置它们?

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

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

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

4

1 回答 1

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

于 2011-11-23T18:03:36.383 回答