Python-Flask-SQLAlchemy 获取ISO格式的日期列
Python-Flask-SQLAlchemy Get date column in ISO format
我有一个模型 class 看起来像这样
class Test(database.Model):
created_date = database.Column(database.DateTime,
default=datetime.utcnow,
nullable=False)
我通过 运行 命令得到这个
all = Test.query.all()
现在,这让我得到 2017-09-05 09:45:28
格式的日期,我想得到像 2017-09-05T09:45:28.263000
这样的日期的 ISO 表示。
一种选择是 post 处理我收到的数据,但更好的方法是什么?是否有任何 SQLAlchemy 结构可以帮助我实现这一目标?
让我们澄清一下,因为你的问题可能有点误导。
Test.query.all() returns 测试对象列表,其中每个都是您定义的模型的表示,并且应包含已声明的属性(如 creation_date)。
>>> t = Test.query.all()
>>> t
[<Test object at 0x10010d2d0>, ...]
现在 - 创建日期属性是一个日期时间对象,本身不给你任何具体的表示。相反,它包含一些方法(如 __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'
您呈现数据的方式不是 SQLAlchemy 层应该注意的事情,因为 SQLAlchemy 是 ORM(模型层)并且按照设计不应放在 controller/view 层中:more on mvc
如果你真的想在 SQLAlchemy 模型中有一些属性的预定义表示,请在你的 Test
class 中使用 @property
装饰器。
@property
def created_date(self):
return self.created_date.isoformat()
SQLAlchemy 文档中的更多信息:docs
我有一个模型 class 看起来像这样
class Test(database.Model):
created_date = database.Column(database.DateTime,
default=datetime.utcnow,
nullable=False)
我通过 运行 命令得到这个
all = Test.query.all()
现在,这让我得到 2017-09-05 09:45:28
格式的日期,我想得到像 2017-09-05T09:45:28.263000
这样的日期的 ISO 表示。
一种选择是 post 处理我收到的数据,但更好的方法是什么?是否有任何 SQLAlchemy 结构可以帮助我实现这一目标?
让我们澄清一下,因为你的问题可能有点误导。
Test.query.all() returns 测试对象列表,其中每个都是您定义的模型的表示,并且应包含已声明的属性(如 creation_date)。
>>> t = Test.query.all()
>>> t
[<Test object at 0x10010d2d0>, ...]
现在 - 创建日期属性是一个日期时间对象,本身不给你任何具体的表示。相反,它包含一些方法(如 __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'
您呈现数据的方式不是 SQLAlchemy 层应该注意的事情,因为 SQLAlchemy 是 ORM(模型层)并且按照设计不应放在 controller/view 层中:more on mvc
如果你真的想在 SQLAlchemy 模型中有一些属性的预定义表示,请在你的 Test
class 中使用 @property
装饰器。
@property
def created_date(self):
return self.created_date.isoformat()
SQLAlchemy 文档中的更多信息:docs