RethinkDB是一个非常好用且非常方便的NoSQL数据库引擎。我正在寻找插入Python日期时间对象的最佳方法。 RethinkDB会记录UTC时间戳,所以我找到了一个解决方案来以正确的格式转换我的datetime对象。在rethinkdb中插入python datetime的最佳方法是什么?
我用这个痘痘功能到我的DateTime对象转换成somethink RethinkDB理解:
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()
我目前的时区是CET(GMT + 2小时) 这是存储在rethinkdb我的日期,一个很好的解决方案或有更好的解决方案吗?
感谢您的帮助
我怀疑你在数据库中存储错误的时间。行'dt = datetime.strptime(meta ['published_at'],'%Y-%m-%d%H:%M')将导致日期时间对象时区幼稚,因为您尚未指定时区任何地方。它是否在CET?它在UTC吗?考虑到这种模糊性,dt.utctimetuple()会返回什么?如果您正在处理时区,最好总是使用可识别时区的日期时间对象。有关更多详细信息,请查看[pytz](http://pytz.sourceforge.net) – CadentOrange
对于上述评论 - 始终以保存时区信息的格式存储您的日期时间。即使您未使用多国数据集,夏令时也可能导致问题。 –
谢谢,现在我明白datetime在时区中的重要性。 – k3z