【发布时间】:2018-01-22 04:30:28
【问题描述】:
我有一个从 API 获得的日期。格式为2015-01-01T15:04:23Z。
如何在使用 Flask-SQLAlchemy 的模型中接受这个日期?
到目前为止,我已经尝试过了,
date = db.Column(db.DateTime)
和
date = db.Column(db.DateTime(timezone=True))
这给了我错误
StatementError: (exceptions.TypeError) SQLite DateTime type only accepts Python datetime and date objects as input.
另外,当我使用get 检索它时,我需要它采用完全相同的格式。
dateutil python 模块可以很好地解析它,但是当我从表中检索它时,我需要得到2015-01-01T15:04:23Z。
>>> from dateutil.parser import parse
>>> parse('2015-01-01T15:04:23Z')
datetime.datetime(2015, 1, 1, 15, 4, 23, tzinfo=tzutc())
【问题讨论】:
-
"SQLite DateTime 类型只接受 Python 日期时间",然后将其解析为 Python 日期时间对象:stackoverflow.com/questions/127803/…。
-
@IljaEverilä 检索后如何以相同的格式恢复它?
-
所讨论的格式是 ISO 8601。Python 对它的支持有些欠佳。
datetime.isoformat()用于将日期时间对象格式化为 ISO 8601 字符串,但这不允许您使用 UTC 的简写“Z”,例如(这并不是什么大事)。总而言之,在 Python 中处理日期时间有点痛苦,尤其是在涉及时区的情况下。
标签: python flask sqlite sqlalchemy schema