使用Cassandra python驱动程序

时间:2016-05-13 19:32:49

标签: python cassandra

有没有办法声明一个Model(使用对象映射器),然后修改它的键空间和表,无论它们最初是否被声明?

用例如下:

  • 我想维护数据库中的内容的[python]模型,而不必在运行时动态生成此定义。

  • 模型可以存在于多个表/键空间中,因此必须在这些键空间/表中访问,但这仅在运行时确定,并对所有键空间/表使用相同的模型。

1 个答案:

答案 0 :(得分:1)

cqlengine目前没有提供这样做的好方法。您现在最好的选择是定义一个抽象模型,并通过设置__keyspace__属性为每个键空间专门设置一次。您甚至可以通过键空间名称动态生成这些类:

class Base(Model):
    __table_name__ = 'my_table'
    k = Integer(primary_key=True)
    v = Integer()

for ks in ('one', 'two', 'three', 'four'):
    create_keyspace_simple(ks, 1)
    ks_type = type(ks, (Base,), {'__keyspace__': ks})
    sync_table(ks_type)

这是设计的,但展示了如何为每个键空间生成ks_type模型。

cqlengine最终会有一种内在的方式对此进行建模。在this ticket中进行了一些讨论。该解决方案可能会附带this one