当前位置: 首页 > 知识库问答 >
问题:

如何使用python-cassandra-driver插入具有自定义时间戳的数据

胡飞鹏
2023-03-14

幸运的是,我发现了一个‘使用时间戳’的操作,时间戳较大的cql会覆盖较小的时间戳,否则不会。因此,使用“使用时间戳”,我可以使用自定义时间戳来确定是否覆盖。它在CQLSH中工作得很好。

但是它在python-cassandra-driver中失败了,如何使“使用时间戳”在python-cassandra-driver中起作用?我的代码如下:

insert_sql = ("INSERT INTO activate (rowkey, qualifier, info, act_date, log_time) "
              "VALUES(%s, %s, %s, %s, %s) "
              "USING TIMESTAMP %s")
insert_data = (a_string, a_string, a_string, a_string, a_string, a_custom_timestamp)
session.execute(insert_sql, insert_data)

共有1个答案

姬乐
2023-03-14

对于设置自定义时间戳来说,这是一个不正确的用例。重要的是不要滥用这个特性,因为它可能会产生许多意想不到的副作用,并最终导致不可靠的数据。

改用轻量级事务(LWT)(也用PreparedStatements代替原始字符串!)

stmt = session.prepare("
           INSERT INTO activate (rowkey, qualifier, info, act_date, log_time)
           VALUES (?, ?, ?, ?, ?)
           IF NOT EXISTS
           ")
results = session.execute(stmt, [arg1, arg2, ...])

在这里和这里读更多。LWT由于必须触发paxos共识检查而受到性能打击,但它比“先读后写”的方法要好。

CREATE TABLE activate (
     rowkey text,
     insert_time timestamp,
     qualifier text,
     info text,
     act_date timestamp,
     log_time timestamp, 
   PRIMARY KEY (rowkey, insert_time));
 类似资料:
  • 是否可以使用 Python 卡桑德拉驱动程序的预准备语句将时间戳值插入到卡桑德拉键空间中?当我尝试这样做时,我收到以下错误消息: 预期:<code> 我看到这个问题以前已经讨论过了。但不确定是否已经解决了。怎么做?使用简单的语句做同样的事情效率低下。

  • 我正在编写一些python代码,这些代码将随着时间的推移收集数据。我要把这个存放在卡桑德拉。我花了一整天的时间在这个问题上,但找不到有效的东西。 我可以创建表,但在插入各种数据时遇到了麻烦(time_current timestamp,data blob)。我无法正确格式化它。我计划按小时划分行(在我的用例中,数据大小应该很好),每个数据条目都有列(2-3/分钟)。 2)我的数据是一个小纸条。它将

  • 我有带有时间戳(UTC时间)的json日志。我将键和值映射到Cassandra表键并插入记录。但是,Cassandra通过从时间戳中减去5小时,再次将已有的UTC时间戳转换为UTC。这里的时区是(GMT+5)。 现在时间已经是UTC时间,并且仍然插入5小时前的时间戳。 我如何解决这个问题?

  • 重要说明:如果您现在正在处理这个问题,请使用datastax的新cassandra-driver(即导入cassandra ),因为它解决了大多数常见问题,不要再使用旧的cql驱动程序,它已经过时了!这个问题在新驱动开发之前就存在了,我们不得不使用一个不完整的旧库,叫做cql(导入cql 简介我正在使用python库cql访问Cassandra 1.2数据库。在数据库中,我有一个带有时间戳列的表,

  • 我想在我的表中为过期的“竞赛”设置一个未来的时间戳。我可以毫无问题地输入时间,除了当我检索输入时,它似乎不会返回一个碳实例,而只是一个带时间的字符串? 这就是我用来创建新竞赛的内容,表中的时间格式与创建的和更新的字段完全相同。当我尝试以下方法时,它们似乎返回了一个碳实例: 为什么我没有得到一个碳实例返回? 我的迁移文件如下所示: