python - 使用datastax python-driver从cassandra获取正确的时间戳

标签 python datetime cassandra timestamp datastax

我正在使用 datastax python-driver 从表中检索时间戳。我想要做的是将先前检索到的时间戳存储在一个 var 中,并在下一个查询中使用它来检索比前一个更大的时间戳。 查询基本上是这样的:

cqlsh> SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1;


 insert_time              | message
--------------------------+----------------------------------
 2013-10-30 10:32:45+0530 | 83500612412011e3ab6c1c3e84abd9db

如您所见,来自 CQL 的时间戳2013-10-30 10:32:45+0530。但是当我通过 python-driver 检索它时,结果是不同的(我在不同的系统上而不是在任何 cass 节点上执行 python 查询):

>>> from cassandra.cluster import Cluster
>>> c = Cluster( [10.60.60.2] )
>>> session = c.connect()
>>> q = "SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1"
>>> rows = session.execute(q)
>>> print rows
[Row(insert_time=datetime.datetime(2013, 10, 30, 5, 2, 45, 4000), message=u'83500612412011e3ab6c1c3e84abd9db')]
>>> timestamp = rows[0][0]
>>> print t
2013-10-30 05:02:45.004000

如您所见,来自 python-driver 的时间戳2013-10-30 05:02:45.004000,这与 CQL 不同。不仅时间不同,而且表现形式也发生了变化。这不能用于后续查询中的比较。

问题

  1. 我在 python 中检索时间戳时做错了什么?
  2. 有没有办法将纪元时间输出为 int 而不是日期时间格式?
  3. 这与时钟同步或时区相关吗?
  4. 谁能帮我解决这个问题,以便可以重复使用 python 检索的时间戳来与 cass 时间戳进行比较?

提前致谢。感谢您的帮助

设置

  • 运行虚拟机的单主机;
  • cass 沙箱 - 3 个 headless 虚拟机作为单个 dc 集群运行;
  • 正在从主机执行的 python 代码;
  • 使用 ntp 与主机同步的 VM 日期、时间
  • [cqlsh 4.0.0 | Cassandra 2.0.0 | CQL 规范 3.1.0 |节俭协议(protocol) 19.37.0]

最佳答案

看起来 cqlsh 正在显示您本地时区的时间戳(+0530)。 python 驱动程序以 UTC 格式返回日期时间。就其值(value)而言,数据作为 unix 时间戳存储在 Cassandra 中,没有时区的概念。

我的建议是,在将它显示给用户之前,您始终将 UTC 用于日期时间。

关于python - 使用datastax python-driver从cassandra获取正确的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19676192/

相关文章:

python - 寻找两个圆的交点

python - 约束 wxPython MultiSplitterWindow Pane

Python - 验证 url 是否具有域名或 ip 地址

python - 导入错误 : No module named path

ruby-on-rails - 如何在 REST XML Web 服务中表示可变偏移时区?

java - 使时间出现在同一位置的控制台程序

cassandra - ScyllaDB - [无效查询] 消息 ="Collection filtering is not supported yet"

javascript - 用时刻严格解析日期

java - titan 图数据库中并发更新的问题

database - 如果 Cassandra 节点在压缩期间用完磁盘空间会怎样?