Python Cassandra cql:INSERT时间戳和blob

时间:2014-03-31 10:58:04

标签: python cassandra timestamp blob cql

我正在编写一些将随时间收集数据的python代码。我需要将它存储在Cassandra中。 我花了整整一天的时间,却找不到有用的东西。

CREATE TABLE timearchive 
  (name_yymmddhh text, name text, ip text, time_current timestamp, data blob, 
   PRIMARY KEY (name_yymmddhh, time_current));

我可以创建表,但是我在插入各种数据时遇到问题(time_current timestamp,data blob)。我无法正确格式化。我打算按小时打破行(数据大小在我的用例中应该没问题)和每个数据输入的列(2-3 / min)。

这是我要插入的代码。如果我将timestamp / blob的格式更改为int / text。

query = """INSERT INTO timearchive
            (name_yymmddhh, name, ip, time_current, data)
            VALUES (:name_yymmddhh, :name, :ip, :time_current, :data)"""
values = {'name_yymmddhh':rowkey,
          'name': dcname,
          'ip': ip,
          'time_current': timenow,
          'data': my_blob}
cursor.execute(query, values)

问题:

1)如何在python中创建一个cql时间戳:timenow?
这没有帮助(对我的Cassandra级别来说太复杂了): Cassandra 1.2 inserting/updating a blob column type using Python and the cql library

2)我的数据是一个字典。这将是一个大词典和其他数据。 (我发现了各种讨论,但没有任何效果。似乎有一些更新〜6个月前,但没有简单的例子:https://github.com/datastax/python-driver/pull/39
我该怎么说:

my_dict = {'one': 1, 'two': 2, 'three': 3}  
 ...  
my_blob = ???

1 个答案:

答案 0 :(得分:0)

解决。 需要为blob使用最新的Datastax驱动程序,以及上面的INSERT方法(不是字符串转换),以及正确的pickle和bytearray。