如何使用python将字符串转换为rethinkdb中的日期?

时间:2017-02-23 19:47:41

标签: rethinkdb rethinkdb-python

我的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作为日期保留?

1 个答案:

答案 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()