【发布时间】:2017-05-29 04:39:08
【问题描述】:
我有cassandra 模型如下。
from uuid import uuid4
from uuid import uuid1
from cassandra.cqlengine import columns, connection
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.management import sync_table
class BaseModel(Model):
__abstract__ = True
id = columns.UUID(primary_key=True, default=uuid4)
created_timestamp = columns.TimeUUID(primary_key=True,
clustering_order='DESC',
default=uuid1)
deleted = columns.Boolean(required=True, default=False)
class OtherModel(BaseModel):
__table_name__ = 'other_table'
name = columns.Text(required=True, default='')
if __name__ == '__main__':
connection.setup(hosts=['localhost'],
default_keyspace='test')
sync_table(OtherModel)
OtherModel.create(id='d43ca2c3-b670-4efc-afd7-b46ada88c3fc', name='test')
当我创建记录时,它设置了我的系统的created_timestamp 或我执行此代码的位置。
我的系统和cassandra 服务器的时间戳不同。
如果我在系统时间为2017-01-13 10:20:30 的情况下执行此操作,那么它将时间戳设置为相同。如果我再次从另一个系统执行相同的操作,其中timestamp 是2017-01-13 10:20:20,那么它设置相同。
当我像这样运行查询时
select * from test.other_table where id=d43ca2c3-b670-4efc-afd7-b46ada88c3fc limit 1;
它应该返回最后插入的latest(last) 记录,但由于系统时间戳与我插入记录的位置不同,它给出了最先插入的第一条记录。
【问题讨论】:
标签: python cassandra cassandra-python-driver