16

我在 Django 1.4 中有一个新项目,使用 sqlite db。也使用 django_extenstions 的 shell_plus 没有问题。

当我安装 IPython 时,两者都shell开始shell_plus抱怨:

/path/to/my/virtualenv/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:50:
RuntimeWarning: SQLite received a naive datetime (2012-07-29 13:15:45.229464) while time zone support is active.

似乎 IPython 本身使用了未知的日期时间。如何解决这个问题?

编辑:

我不想禁用 Django 的时区支持。

4

3 回答 3

15

我把它放在我的 local_settings.py 中:

#ignore the following error when using ipython:
#/django/db/backends/sqlite3/base.py:50: RuntimeWarning:
#SQLite received a naive datetime (2012-11-02 11:20:15.156506) while time zone support is active.

import warnings
import exceptions
warnings.filterwarnings("ignore", category=exceptions.RuntimeWarning, module='django.db.backends.sqlite3.base', lineno=53)
于 2012-11-02T11:23:44.420 回答
12

我有同样的问题,但我不认为这真的是一个问题。IPython 似乎在内部使用天真的日期时间,而 Django 只是警告它。当您打开时区支持以及检测到幼稚的日期时间时,Django 总是会发送此警告。在我的机器上,此警告仅在我启动或关闭 IPython 时出现。此警告不会以任何方式影响您使用 IPython 的工作。因此,您可以在 IPython 中安全地创建感知日期时间,并将它们保存到您的数据库中。为了摆脱该警告,您可能必须处理 IPython 的内部结构。

一般来说,当使用有意识的日期时间时,我强烈建议为此目的使用pytz 。

于 2012-08-28T08:47:30.037 回答
-3

修改 settings.py,将 USE_TZ 设置为 False 可以解决这个问题。

于 2012-08-22T03:07:37.797 回答