我的rethinkdb以下列格式存储数据。
data = [{
'appName': "app1",
'startTime': "Mon, 14 Feb 2017 05:10:00 GMT",
'endTime': "Mon, 14 Feb 2017 05:15:00 GMT",
'status': "SUCCESS"
},
{
'appName': "app1",
'startTime': "Mon, 13 Feb 2017 05:10:00 GMT",
'endTime': "Mon, 13 Feb 2017 05:15:00 GMT",
'status': "FAILED"
},
{
'appName': "app2",
'startTime': "Mon, 13 Feb 2017 05:10:00 GMT",
'endTime': "Mon, 13 Feb 2017 05:15:00 GMT",
'status': "RUNNING"
}]
我需要获取所有应用的最新信息。
r.table('apps').group('appName').max('startTime').run()
但由于我的startTime存储为字符串,因此无法进行最大操作。
我尝试更新表格中的值,如下所示,
r.table('apps').update({'startTimeDate': pytz.timezone('Europe/Rome').localize(datetime.strptime(r.row['startTime'], '%a, %d %b %Y %H:%M:%S GMT'))}).run()
我收到错误:
TypeError:必须是字符串,而不是Bracket
如何在字符串rethinkdb中将startTime和endTime作为日期保留?
答案 0 :(得分:0)
RethinkDB仅支持格式化为ISO8601的日期或自UNIX纪元以来的秒数。
您的update
查询有正确的想法,但它尝试在update
中使用python函数,其中row['startTime']
是查询片段而不是字符串。
这样的事情可能会起作用:
for app in r.table('apps').run():
date = (pytz.timezone('Europe/Rome')
.localize(datetime.strptime(app['startTime'],
'%a, %d %b %Y %H:%M:%S GMT'))
(r.table('apps')
.get(app['id'])
.update({'startTimeDate': date},
durability='soft')
).run()
r.table('apps').sync()