我正在寫一些將隨時間收集數據的python代碼。我需要將它存儲在Cassandra中。 我花了整整一天的時間,但找不到有效的東西。Python Cassandra cql:插入時間戳和blob
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)。
這是我的代碼插入。如果我將時間戳/ 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中的定製列表時間戳:timenow?
這並沒有幫助(太複雜,我的卡珊德拉級): 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 = ???
對於第一個問題,在快速瀏覽源代碼之後,看起來您無法在Python中的客戶端上生成timeuuid。但是,您可以用一個直接的CQL函數調用now()來替換':time_current',這會在語句執行時在服務器上生成當前的timeuuid。 –
這是如何通過Python代碼完成的? – user3480774
只需使用'VALUES(:name_yymmddhh,:name,:ip,now(),:data)「」「'而不是'VALUES(:name_yymmddhh,:name,:ip,:time_current,:data)」「」'''你已經,並且當你賦值'values'時刪除設置'time_current'的部分。 –