我正在研究Pattern 1,并想知道是否有办法,在python中或以其他方式将具有相同id的所有行“收集”到带有字典的行中。
CREATE TABLE temperature (
weatherstation_id text,
event_time timestamp,
temperature text,
PRIMARY KEY (weatherstation_id,event_time)
);
插入一些数据
INSERT INTO temperature(weatherstation_id,event_time,temperature)
VALUES ('1234ABCD','2013-04-03 07:01:00','72F');
INSERT INTO temperature(weatherstation_id,event_time,temperature)
VALUES ('1234ABCD','2013-04-03 07:02:00','73F');
INSERT INTO temperature(weatherstation_id,event_time,temperature)
VALUES ('1234ABCD','2013-04-03 07:03:00','73F');
INSERT INTO temperature(weatherstation_id,event_time,temperature)
VALUES ('1234ABCD','2013-04-03 07:04:00','74F');
查询数据库。
SELECT weatherstation_id,event_time,temperature
FROM temperature
WHERE weatherstation_id='1234ABCD';
结果:
weatherstation_id | event_time | temperature
-------------------+--------------------------+-------------
1234ABCD | 2013-04-03 06:01:00+0000 | 72F
1234ABCD | 2013-04-03 06:02:00+0000 | 73F
1234ABCD | 2013-04-03 06:03:00+0000 | 73F
1234ABCD | 2013-04-03 06:04:00+0000 | 74F
哪个有效,但我想知道我是否可以根据weatherstationid
将其变为一行。
E.g。
{
"weatherstationid": "1234ABCD",
"2013-04-03 06:01:00+0000": "72F",
"2013-04-03 06:02:00+0000": "73F",
"2013-04-03 06:03:00+0000": "73F",
"2013-04-03 06:04:00+0000": "74F"
}
cassandra驱动程序中是否有一些参数可以指定为通过某个id(weatherstationid
)收集并将其他所有内容转换为字典?或者是否需要一些Python魔法才能将每个id(或一组ID)的行列表转换为单行?
答案 0 :(得分:1)
Alex,你必须做一些后期执行数据处理来获得这种格式。无论您使用什么row_factory,驱动程序都会逐行返回。
驱动程序无法完成您建议的格式的原因之一是内部涉及分页(默认fetch_size为5000)。因此,您生成的结果可能是部分或不完整的。此外,当查询执行完成并且您确定已获取所有必需结果时,可以使用Python轻松完成此操作。