RethinkDB è un motore di database NoSQL meraviglioso e molto utile. Sto cercando il modo migliore per inserire oggetti datetime di Python. RethinkDB strorizza i timestamp UTC, quindi ho trovato una soluzione per convertire il mio oggetto datetime nel formato corretto.Qual è il modo migliore per inserire python datetime in rethinkdb?
Io uso questa funzione litle per convertire il mio oggetto datetime in somethink RethinkDB capire:
import calendar
from datetime import datetime
import rethinkdb as r
def datetime_to_epoch_time(dt):
timestamp = calendar.timegm(dt.utctimetuple())
return r.epoch_time(timestamp)
title = u'foobar'
published_at = '2014-03-17 14:00'
# firts I convert 2014-03-17 14:00 to datetime
dt = datetime.strptime(published_at, '%Y-%m-%d %H:%M')
# then I store the result
r.table('stories').insert({
'title': title,
'published_at': datetime_to_epoch_time(dt),
}).run()
mio fuso orario corrente è CET (GMT + 2 ore) Si tratta di una buona soluzione per la memorizzazione le mie date in rethinkdb o esiste una soluzione migliore?
Grazie per il vostro aiuto
Ho il sospetto che si sta memorizzare il momento sbagliato nel database. La riga 'dt = datetime.strptime (meta ['published_at'], '% Y-% m-% d% H:% M')' produrrà un oggetto datetime che è timezone naive come non hai specificato fuso orario ovunque. È in CET? È in UTC? Data questa ambiguità, cosa restituirà 'dt.utctimetuple()'? Se hai a che fare con i fusi orari, è meglio lavorare sempre con oggetti datetime con timezone. Per maggiori dettagli, date un'occhiata a [pytz] (http://pytz.sourceforge.net) – CadentOrange
+1 per il commento sopra - memorizzate sempre i vostri dati in un formato che le informazioni sul fuso orario sono conservate. Anche se non si sta lavorando con dati di più paesi, l'ora legale potrebbe causare problemi. –
Grazie, ora capisco l'importanza del fuso orario in datetime. – k3z