【发布时间】:2020-04-10 23:13:20
【问题描述】:
我正在使用 peewee ORM 从 MySQL 数据库中读取数据。我的数据库模型类如下
import peewee
import datetime
from collections import OrderedDict
...............
class User(peewee.Model):
...............
created_by = CharField(null=True)
update_by = CharField(null=True)
updated_date = DateTimeField(default=datetime.datetime.now)
.................
def __to_dict__(self):
user_dict = OrderedDict([
.................
('created_by', self.created_by),
('update_by', self.update_by),
('updated_date', self.updated_date.isoformat())
])
.............
我在以下代码中设置来自 ORM 的数据
users= User.select().distinct()
return [user.__to_dict__() for user in users]
对于一些更新日期字段为“0000-00-00 00:00:00”的数据行,我收到以下错误
user = user.__to_dict__()
File "/opt/appserver/app1/app/models/user.py", line 172, in __to_dict__
('updated_date', self.updated_date.isoformat())
AttributeError: 'str' object has no attribute 'isoformat'
为什么会出现这个错误?
PS:AttributeError: 'str' object has no attribute 'isoformat' 没有回答我的问题
【问题讨论】:
-
您希望
self.updated_date是一个datetime对象,而实际上它是一个str对象。 peewee 文档是否提到了DateTimeField的用法? -
@DeepSpace 不是,见
updated_date = DateTimeField(default=datetime.datetime.now) -
您得到的错误非常清楚地表明
self.updated_date是str