2

我正在使用以下代码从我的 tempodb 数据库中读取值:

import datetime
from tempodb import Client

client = Client("key", "secret")

start = datetime.datetime(2014, 3, 28)
end = datetime.datetime(2014, 3, 29)
data = client.read_key("custom", start, end, interval="1hour", function="mean")
print data

该代码工作正常,并且可以获取数据点。但是,它以 format 格式获取它们'DataSet',这是 TempoDB 的数据点格式。但他们没有展示如何从这种格式转换为实际坐标或数字。这是代码返回的数据:

{'series': <tempodb.base.Series object at 0x2500df0>, 
'summary': <tempodb.base.Summary object at 0x250acb0>, 
'end': datetime.datetime(2014, 3, 29, 0, 0, tzinfo=tzutc()), 
'data': [<tempodb.base.DataPoint object at 0x250a2b0>, 
<tempodb.base.DataPoint object at 0x250a270>, 
<tempodb.base.DataPoint object at 0x250aa50>, 
<tempodb.base.DataPoint object at 0x250a9f0>, 
<tempodb.base.DataPoint object at 0x250aad0>, 
<tempodb.base.DataPoint object at 0x250ab30>, 
<tempodb.base.DataPoint object at 0x250ab90>, 
<tempodb.base.DataPoint object at 0x250abf0>, 
tempodb.base.DataPoint object at 0x250ac50>], 
'start': datetime.datetime(2014, 3, 28, 0, 0, tzinfo=tzutc())}

有谁知道如何将这种格式(DataSet)转换为实际坐标?

编辑:

这是我当前的代码:

import datetime
from tempodb import Client

client = Client("key", "secret")

start = datetime.datetime(2014, 3, 28)
end = datetime.datetime(2014, 3, 29)
data = client.read_key("custom", start, end, interval="1hour", function="mean")
print data      
for point in data['data']:
        print(point.value)

这将输出以下内容,并带有TypeError

{'series': <tempodb.base.Series object at 0x15dae30>, 'summary': <tempodb.base.Summary object at 0x15e4d30>, 'end': datetime.datetime(2014, 3, 29, 0, 0, tzinfo=tzutc()), 'data': [<tempodb.base.DataPoint object at 0x15e4910>, <tempodb.base.DataPoint object at 0x15e42d0>, <tempodb.base.DataPoint object at 0x15e4ab0>, <tempodb.base.DataPoint object at 0x15e4ad0>, <tempodb.base.DataPoint object at 0x15e4b70>, <tempodb.base.DataPoint object at 0x15e4bd0>, <tempodb.base.DataPoint object at 0x15e4c10>, <tempodb.base.DataPoint object at 0x15e4c70>, <tempodb.base.DataPoint object at 0x15e4cd0>], 'start': datetime.datetime(2014, 3, 28, 0, 0, tzinfo=tzutc())}
Traceback (most recent call last):
  File "readtempo.py", line 10, in <module>
    for point in data['data']:
TypeError: 'DataSet' object has no attribute '__getitem__'
4

2 回答 2

0

根据tempodbpython客户端源码,可以使用ts属性:

for point in data.data:
    print(point.ts.isoformat())

还要检查to_json()方法。

希望有帮助。

于 2014-03-31T03:29:02.207 回答
0

正如@alecxe 提到的,请确保您使用格式进行迭代

for point in data.data:

TempoDB 的 DataSet 类由两个对象组成:ts(时间戳)和value(点值)。要访问时间戳和值:

print point.ts.strftime("%b %e, %Y")
print point.value

我最近利用 TempoDB 来分析芝加哥 750,000 行共享单车使用数据的数据挑战。项目结果在这里,包含 TempoDB 的 Python 接口的 GitHub 源代码在这里

于 2014-04-03T20:54:18.600 回答