我有一個從API獲取的日期。它的形式是2015-01-01T15:04:23Z
。在Flask-SQLAlchemy中使用ISO時間戳
如何使用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
這個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 DateTime對象日en:https://stackoverflow.com/questions/127803/how-to-parse-an-iso-8601-formatted-date。 –
@IljaEverilä如何在取回後以相同的格式恢復? –
有問題的格式是ISO 8601. Python對它的支持有點欠佳。有[datetime.isoformat()'](https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat)用於將日期時間對象格式化爲ISO 8601字符串,但會例如,不允許您使用UTC的簡寫「Z」(反正這不算什麼大事)。在Python中所有的日期時間處理都有點痛苦,特別是如果涉及時區的話。 –