如何在peewee中获取DateTimeField的值

时间:2018-05-19 19:53:38

标签: python sql peewee

class Test(Model):
    time = DateTimeField()

# ...
row = Test.select()[0]
test.time

这将返回如下所示的字符串:2017-01-23 01:01:39+01:00。我怎样才能将它作为日期时间对象取而代之?我是否必须手动解析它?

如果有关于如何使用DateTimeField的任何文档,我也会感兴趣。官方文件中没有任何内容。

2 个答案:

答案 0 :(得分:1)

您使用的是SQLite吗?如果是这样,SQLite没有专用的日期时间类型,因此日期时间作为字符串存储在数据库中。 peewee将做的是识别来自DB的某些日期时间格式并将它们转换为datetime对象。您需要做的是确保:

  1. 创建/保存对象时,将datetime对象指定给该字段。
  2. 回读预先存在的数据时,数据采用可识别的格式。
  3. peewee支持日期时间字段开箱即用的格式为:

    • YYYY-mm-dd HH:MM:SS.ffffff
    • YYYY-mm-dd HH:MM:SS
    • YYYY-MM-DD

    看起来你的区域信息。我建议转换为UTC并删除区域信息。那应该解决它。

答案 1 :(得分:0)

您是否尝试过添加这样的默认设置?

time = DateTimeField(default=datetime.datetime.now())

或者在添加条目时直接将其添加为datetime.datetime对象:

test = Test(....., time=datetime.datetime.strptime("2018-3-15", '%Y-%m-%d'))

在第二种情况下,您不需要在类定义中指定任何内容......