在pycassa中使用列验证器

2 投票
1 回答
753 浏览
提问于 2025-04-17 06:55

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

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

但是这个方法不行,因为第二个字典还没有初始化。我试着把它设置成下面这样的:

cf.column_validators['supercolumn_name'] = {}

但也不行……所以如果有任何处理这个问题的例子,我会非常感激,因为官方的 pycassa 文档没有提供更详细的信息。此外,这些验证器似乎不是持久的,那么有没有办法让它们持久化呢?

补充:在查看 pycassa 的源代码后,我发现对于验证器,你不需要指定列所在的超级列,所以

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

应该可以解决这个问题!不过,问题仍然是这些验证器是否可以以某种方式持久化?

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

撰写回答