无法在Cassandra DB中添加日期时间值?无效的语法错误?

时间:2018-10-16 14:27:01

标签: python-2.7 datetime cassandra

问题:

我目前正在尝试使用以下代码将日期时间对象插入我的Cassandra数据库:

dt_str = '2016-09-01 12:00:00.00000'
dt_thing = datetime.datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S.%f')

def insert_record(session):
    session.execute(
        """
        INSERT INTO record_table (last_modified)
        VALUES(dt_thing)
        """
        )

但是,我收到以下错误:

cassandra.protocol.SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 3:17 no viable alternative at input ')' (...record_table (last_modified)        VALUES([dt_thing])...)">

背景信息

我是Cassandra的新手,我不确定该怎么做。我基本上想做的是在数据库中添加一个现有的日期时间值,因为早期版本的代码正在寻找一个但它尚不存在(因此,为什么我要手动添加一个)。

我正在使用Python 2.7和Cassandra 3.0。

任何输入或如何解决都会很棒!

1 个答案:

答案 0 :(得分:0)

我回答了similar question yesterday。但是一般的想法是,您需要定义一个准备好的语句。然后将您的dt_thing变量绑定到它,就像这样:

dt_str = '2016-09-01 12:00:00.00000'
dt_thing = datetime.datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S.%f')

def insert_record(session):
    preparedInsert = session.prepare(
        """
        INSERT INTO record_table (last_modified)
        VALUES (?)
        """
        )
    session.execute(preparedInsert,[dt_thing])

此外,我不建议将时间戳记用作单独的PRIMARY KEY(这是INSERT可以使用的唯一模型)。