使用python cassandra预处理语句插入时间戳

时间:2014-10-23 19:50:17

标签: python cassandra timestamp prepared-statement

是否可以使用Python Cassandra驱动程序的预处理语句将时间戳值插入Cassandra键空间?当我尝试这样做时,我收到以下错误消息:

预期:<class 'cassandra.cqltypes.DateType'>, Got: <type 'str'>

我之前发现此问题是discussed。但不确定它是否已经解决。这该怎么做?使用简单语句执行相同操作效率低下。

2 个答案:

答案 0 :(得分:0)

是的,您可以通过绑定 datetime 对象,通过预准备语句插入时间戳值。我成功地尝试了它。

答案 1 :(得分:0)

像Aaron所说,你需要使用一个日期时间对象。给出一个简单的表定义:

CREATE TABLE stackoverflow2.timestamps (
    bucket text,
    value timestamp,
    PRIMARY KEY (bucket, value)
) WITH CLUSTERING ORDER BY (value DESC)

在给定有效(已连接)timestamps的情况下,此代码会将十个时间戳插入session表:

preparedInsert = session.prepare(
"""
    INSERT INTO stackoverflow2.timestamps (bucket,value) VALUES (?,?);
"""
)
#end prepare statements

for counter in range(1,10):
    currentTime = datetime.datetime.today()
    bucket = currentTime.strftime("%Y%m")
    session.execute(preparedInsert,[bucket,currentTime])

基本上,datetime.datetime.today()行使用当前时间创建日期时间对象。 strftime从中创建字符串时间bucket,然后preparedInsert将它们都放入Cassandra。