在filter()和save()之间删除Cassandra问题

时间:2017-03-28 14:49:27

标签: cassandra cassandra-python-driver

我遇到一个问题,即加载项目并将其保存回cassandra之间的删除会导致未更新的列被删除。

class TestItem(Model):
    uuid = columns.Integer(primary_key=True)
    data_1 = columns.Text()
    data_2 = columns.Text()

TestItem.create(uuid=1, data_1='data_1', data_2='data_2').save()

item = TestItem.filter(uuid=1).first()
TestItem.objects(uuid=1).delete()
item.data_2 = 'data_2_deleted'

item_b.save()
# stdout:
# TestItem(uuid=1, data_1=u'data_1', data_2='data_2_deleted')

TestItem.filter(uuid=1).first()
# stdout:
# TestItem(uuid=1, data_1=None, data_2=u'data_2_deleted')

我希望data_1仍然存在。

这是预期的行为吗?我可以以某种方式更改我的代码,无论是项目是完全删除还是使用之前查询过的所有值保存。

1 个答案:

答案 0 :(得分:0)

问题是cassandra驱动程序只回写实际更改的行。

在我的用例中,我想写所有行,无论是否改变,所以我使用了:

TestItem.create(**dict(item_b)).save()