在 filter() 和 save() 之间删除的 Cassandra 问题
Cassandra issue with delete between filter() and save()
我遇到一个问题,即在加载项目和将其保存回 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 仍然存在。
这是有意为之的行为吗?我能否以某种方式更改我的代码,使该项目被完全删除或与之前查询的所有值一起保存。
问题是 cassandra 驱动程序只写回实际更改的行。
在我的用例中,我想写所有行,无论是否更改,所以我使用了:
TestItem.create(**dict(item_b)).save()
我遇到一个问题,即在加载项目和将其保存回 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 仍然存在。
这是有意为之的行为吗?我能否以某种方式更改我的代码,使该项目被完全删除或与之前查询的所有值一起保存。
问题是 cassandra 驱动程序只写回实际更改的行。
在我的用例中,我想写所有行,无论是否更改,所以我使用了:
TestItem.create(**dict(item_b)).save()