如何使用Python将字符串转换为RethinkDB中的日期



我的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()

最新更新