有没有办法声明一个Model(使用对象映射器),然后修改它的键空间和表,无论它们最初是否被声明?
用例如下:
我想维护数据库中的内容的[python]模型,而不必在运行时动态生成此定义。
模型可以存在于多个表/键空间中,因此必须在这些键空间/表中访问,但这仅在运行时确定,并对所有键空间/表使用相同的模型。
答案 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。