【发布时间】:2017-11-08 13:10:31
【问题描述】:
我正在尝试向 cassandra 表动态添加新列。我正在使用以下版本 -
cqlsh 5.0.1
我正在使用 python 与 Cassandra 进行交互。我有一个 python 列表,我希望将其作为列名添加到 Cassandra 表中。
Python 列表 -
['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
目前,我正在迭代一个列表,然后将每一列一一添加到 cassandra 表中,如下所示 -
from cassandra.cluster import Cluster
cluster = Cluster(['localhost'])
session = cluster.connect()
session.execute("CREATE KEYSPACE IF NOT EXISTS data WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};")
session.execute("use my_data")
session.execute("CREATE TABLE IF NOT EXISTS data.my_data (pk uuid PRIMARY KEY);")
names = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
for val in names:
try:
session.execute("alter table data.my_data add "+ val +" ascii;")
except:
pass
它工作正常,但实际问题是,如果在我的 python 列表中有超过 1000 个可用条目,那么 cassandra 应该有超过 1000 次点击,这将非常耗时。是否有任何不同的方法可以将列名添加到 cassandra 中的现有表?
【问题讨论】:
-
在 Cassandra 中尝试使用固定的数据模型。并以支持选择查询的方式设计数据模型。
-
您应该创建一个列并动态输入值,而不是动态创建列并插入值。您的查询是什么样的?围绕该查询构建您的表格。