我按照cassandra cqlengine教程。
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine import connection
from datetime import datetime
from cassandra.cqlengine.management import sync_table
from cassandra.cqlengine.models import Model
class ExampleModel(Model):
example_id = columns.UUID(primary_key=True, default=uuid.uuid4)
example_type = columns.Integer(index=True)
created_at = columns.DateTime()
description = columns.Text(required=False)
connection.setup(['127.0.0.1'], "cqlengine", protocol_version=3)
sync_table(ExampleModel)
但是,当我更改模型中的字段时,如果我将字段描述从Text类型更改为Integer类型,然后执行sync_table,我不会看到更改反映在cassandra中的表模式中。怎么解决这个问题?
答案 0 :(得分:0)
这里有两件事是错的:
从概念上讲,您正在尝试进行架构迁移。用于python的apache Cassandra驱动程序还没有真正支持模式迁移。快速查看this ticket将向您解释我的意思。 (注意:您可以在表格中添加新列,sync_table
将起作用,您的新架构将会反映出来,但严格来说这不是ALTER
操作。)
数据模型中的Cassandra数据类型转换必须遵循CQL类型兼容性,该兼容性定义为here。您尝试从Integer
转换为Float
的尝试不兼容。