2017-02-23 1 views
1

Mein rethinkdb speichert Daten im folgenden Format.Wie konvertiere ich Zeichenfolge in ein Datum in rethinkdb mit Python?

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" 
    }] 

Ich muss die neuesten Informationen für alle Anwendungen abrufen.

Aber da meine StartTime als eine Zeichenfolge gespeichert ist, kann ich nicht eine maximale Operation ausführen.

ich die Werte in der Tabelle versucht, die Aktualisierung wie folgt

r.table('apps').update({'startTimeDate': pytz.timezone('Europe/Rome').localize(datetime.strptime(r.row['startTime'], '%a, %d %b %Y %H:%M:%S GMT'))}).run() 

Ich erhalte eine Fehlermeldung:

TypeError: must be string, not Bracket

Wie bestehen ich Startzeit und endTime als Datum in rethinkdb aus string?

Antwort

0

RethinkDB unterstützt nur Datumsangaben, die als ISO8601 formatiert sind, oder als Anzahl von Sekunden seit der UNIX-Epoche.

Ihre update Abfrage hat die richtige Idee, aber es versucht Python Funktionen innerhalb der update zu verwenden, wobei row['startTime'] ein Abfragefragment ist und kein String.

Etwas Ähnliches könnte stattdessen arbeiten:

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() 
Verwandte Themen