如何修复Django的错误:“‘统一’对象有‘tzinfo’没有属性”数据库读取(How to fi

2019-09-02 13:49发布

我部署在Windows Azure上我的Django项目。 我使用SQLite作为数据库服务器,一切都OK。 当我已经部署了我的项目,我决定把它与SQL Azure数据库连接,但似乎这种解决方案产生了一些错误。 我不再能够编辑的用户配置文件。 我总是得到这样的错误:

 AttributeError at /admin/auth/user/1/ 'unicode' object has no attribute 'tzinfo' 

Answer 1:

我试图用同样的问题, django-pyodbc-azure的后台数据库和Django(1.5.1):默认情况下,它存储DateTimeField在你的数据库字段datetime2(7)这看起来是仍然在Django不支持的。 在我的情况下,我加入了选项'use_legacy_datetime' : Truesettings.py ,象下面这样:

DATABASES = {
    'default': {
        'ENGINE' : 'sql_server.pyodbc',
        'NAME' : '<MYDBNAME>',
        'USER': '<MYDBUSER>',
        'PASSWORD': '<MYDBPWD>',
        'HOST': '<MYHOST>',
        'OPTIONS': {
            'use_mars': True,
            'use_legacy_datetime' : True, # I added this line
        },
    },
}

我发现我的解决方案在这里 。 我不知道Azure平台很好,所以我不知道这正是你的情况,如果没有你仍然可以修改数据库替换datetime2(N)具有良好的老油田datetime的。

希望能帮助到你。



Answer 2:

当你的数据库中包含这样的日期,时间标记会发生此错误:

0000-00-00 00:00:00.000000

(这可以在MySQL的发生,如果你删除或覆盖以前的日期与MySQLWorkbench)

当您尝试检索在Django模型对象这些记录,你会得到从一个异常pytz时区库:

AttributeError 'unicode' object has no attribute 'tzinfo'

你应该先编辑您的数据库中的这些日期,并将它们设置为最近的日期,如2018-01-01 00:00:00.000000或设置为NULL (而不是空白)。

看到:

  • https://groups.google.com/forum/#!topic/django-users/Jg_9fQ3jMcU

也可以看看:

  • #1292 -不正确的日期值: '0000-00-00'
  • 在MySQL错误的日期或日期时间设置的缺省值。
  • 如何存储在MySQL中的日期时间字段NULL值?


文章来源: How to fix Django error: “ 'unicode' object has no attribute 'tzinfo' ” on database read