我的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()
但是,由于我的启动时间是作为字符串存储的,所以我无法进行最大操作。
我尝试在表中更新表中的值,
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:必须是字符串,而不是括号
我如何将启动时间和末端持续到retinkdb中的日期?
rethinkDB仅支持格式为ISO8601的日期或自Unix Epoch以来的秒数。
您的 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()