gpt4 book ai didi

python - cqlengine (Cassandra 2.0) 上的错误时间戳

转载 作者:行者123 更新时间:2023-11-28 21:58:06 25 4
gpt4 key购买 nike

我正在尝试使用 cqlengine 或 cql(python) 从 Cassandra 2.0 选择时间戳列,但我得到了错误的结果。

这是我从 cqlsh(或 thrift)获得的:“2013-09-23 00:00:00-0700”

这是我从 cqlengine 和 cql 本身得到的:"\x00\x00\x01AG\x0b\xd5\xe0"

如果你想重现错误,试试这个:

  • 打开cqlsh
  • 创建表测试(名称varchar主键,dt时间戳)
  • insert into table test ('Test', '2013-09-23 12:00') <<< 是的,我尝试通过其他方式添加....
  • select * from test(这里一切正常)
  • 现在继续使用 cqlengine 或 cql 本身并选择该表,您将得到一个损坏的十六进制数。

谢谢!

最佳答案

很遗憾,cqlengine 目前不兼容 cassandra 2.0

Cassandra 2.0 引入了一些新类型,我们还没有机会让 cqlengine 与它们兼容。我也知道 blob 列的问题。

此特定问题是由 cql 驱动程序将时间戳作为原始字节字符串而不是整数返回引起的。

由于 cqlengine 尚不支持 Cassandra 2.0,您最好的选择是使用 Cassandra 1.2.x,直到我们对其进行更新,无论如何,cqlengine 不支持任何新的 2.0 功能。如果你真的需要使用 2.0,你可以像这样子类化 DateTime 列来解决这个问题:

class NewDateTime(DateTime):
def to_python(self, val):
if isinstance(val, basestring):
val = struct.unpack('!Q', val)[0] / 1000.0
return super(NewDateTime, self).to_python(val)

关于python - cqlengine (Cassandra 2.0) 上的错误时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com