重要 如果您今天正在处理这个问题,请使用来自 datastax 的新 cassandra-driver(即 import cassandra),因为它解决了大多数常见问题并且不再使用旧的 cql 驱动程序,它已经过时了!这个问题在新驱动程序甚至还在开发之前就已经很老了,我们不得不使用一个名为 cql 的不完整的旧库(import cql <--不再使用它,移至新驱动程序)。
简介 我正在使用 python 库 cql 访问 Cassandra 1.2 数据库。在数据库中,我有一个带有时间戳列的表,在我的 Python 代码中,我有一个要插入到列中的日期时间。示例如下:
桌子
CREATE TABLE test (
id text PRIMARY KEY,
last_sent timestamp
);
编码
import cql
import datetime
...
cql_statement = "update test set last_sent = :last_sent where id =:id"
rename_dict = {}
rename_dict['id'] = 'someid'
rename_dict['last_sent'] = datetime.datetime.now()
cursor.execute (cql_statement, rename_dict)
问题
当我执行代码时,实际执行的 cql 语句是这样的:
update test set last_sent =2013-05-13 15:12:51 where id = 'someid'
然后它失败并出现错误
Bad Request: line 1:XX missing EOF at '-05'
问题似乎是 cql 库在运行查询之前没有转义('')或转换日期时间。
问题 在不手动转义日期并能够将更精确的完整时间戳存储到 cassandra 时间戳列中的情况下,正确的方法是什么?
提前致谢!