Gan*_*ute 2 python datetime sqlalchemy iso8601 flask-sqlalchemy
我有一个模型类,看起来像这样
class Test(database.Model):
created_date = database.Column(database.DateTime,
default=datetime.utcnow,
nullable=False)
Run Code Online (Sandbox Code Playgroud)
我通过运行命令得到这个
all = Test.query.all()
Run Code Online (Sandbox Code Playgroud)
现在,这为我提供了格式的日期,2017-09-05 09:45:28我想获得日期的 ISO 表示形式,例如2017-09-05T09:45:28.263000.
一种选择是对收到的数据进行后处理,但更好的方法是什么?是否有任何 SQLAlchemy 构造可以帮助我实现这一目标?
让我们澄清一些事情,因为你的问题可能有点误导。
Test.query.all() 返回测试对象的列表,其中每个对象都是您定义的模型的表示,并且应包含声明的属性(如创建日期)。
>>> t = Test.query.all()
>>> t
[<Test object at 0x10010d2d0>, ...]
Run Code Online (Sandbox Code Playgroud)
现在 - 创建日期属性是一个日期时间对象,本身并不为您提供任何特定的表示。相反,它包含一些方法(如__str__、__repr__、isoformat等),可以帮助您获得所需的日期时间对象表示。
>>> t[0].created_date
datetime.datetime(2017, 3, 2, 15, 34, 10, 272)
>>> t[0].created_date.isoformat()
'2017-03-02T15:34:10.000272'
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy 层不应该了解如何呈现数据的方式,因为 SQLAlchemy 是 ORM(模型层),并且按设计不应位于控制器/视图层:有关 mvc 的更多信息
如果您确实希望在 SQLAlchemy 模型中拥有某些属性的预定义表示,请@property在您的类中使用装饰器Test。
@property
def created_date(self):
return self.created_date.isoformat()
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅 SQLAlchemy 文档:docs
| 归档时间: |
|
| 查看次数: |
16256 次 |
| 最近记录: |