Erste richtige timestamp von cassandra mit datastax python-Treiber
Bin ich abrufen Zeitstempel aus einer Tabelle mithilfe der datastax python-Treiber. Was ich versuche zu tun ist, speichern Sie die zuvor abgerufenen Zeitstempel in eine var und verwenden Sie es in der nächsten Abfrage einen Zeitstempel, der größer als der vorhergehende. Die Abfrage im Grunde sieht wie folgt aus:
cqlsh> SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1;
insert_time | message
--------------------------+----------------------------------
2013-10-30 10:32:45+0530 | 83500612412011e3ab6c1c3e84abd9db
Wie Sie sehen können die timestamp von CQL ist 2013-10-30 10:32:45+0530
. Aber wenn ich es abrufen über python-Treiber, die Ergebnisse sind unterschiedlich( ich bin der Ausführung des python-Abfrage auf einem anderen system und nicht auf einem der Cassandra-Knoten ):
>>> from cassandra.cluster import Cluster
>>> c = Cluster( [10.60.60.2] )
>>> session = c.connect()
>>> q = "SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1"
>>> rows = session.execute(q)
>>> print rows
[Row(insert_time=datetime.datetime(2013, 10, 30, 5, 2, 45, 4000), message=u'83500612412011e3ab6c1c3e84abd9db')]
>>> timestamp = rows[0][0]
>>> print t
2013-10-30 05:02:45.004000
Wie Sie sehen können die timestamp von python-Treiber ist 2013-10-30 05:02:45.004000
, die sich von der CQL ein. Nicht nur die Zeit ist anders, aber die Darstellung hat sich geändert. Dies kann nicht verwendet werden für den Vergleich in späteren Abfragen.
FRAGEN
- Was mache ich falsch beim abrufen Zeitstempel in python ?
- Gibt es eine Möglichkeit die Ausgabe Epoche Zeit als int statt dem datetime-format ?
- Ist dies etwas zu tun mit der Uhr synchronisiert oder Zeitzone bezogen ?
- Kann mir jemand helfen mit dieser, so dass die python abgerufen Zeitstempel kann wiederverwendet werden, um zu vergleichen, gegen cass Zeitstempel ?
Vielen Dank im Voraus. Dankbar für Ihre Hilfe
SETUP
- einzigen host-Rechner unter vms;
- cass sandbox - 3 headless vms laufen als single-dc-cluster;
- python-code, der ausgeführt wird von der host-Maschine;
- VMs Datum,Zeit, synchronisiert mit dem host über ntp -
- [cqlsh 4.0.0 | Cassandra 2.0.0 | CQL-spec 3.1.0 | Secondhand-Protokoll 19.37.0]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie cqlsh ist die Anzeige der timestamp in Ihre lokale Zeitzone (die ist +0530). Der python-Treiber gibt datetimes in UTC. Für was es Wert ist, werden die Daten in Cassandra als unix-timestamp, die nicht über ein Konzept von Zeitzonen.
Mein Vorschlag ist, dass Sie immer mit UTC für datetimes, bis kurz bevor es dem Benutzer anzeigt.