2012-07-29 4 views
16

私はDjango 1.4でsqlite dbを使って新しいプロジェクトを持っています。 django_extenstionsのshell_plusも問題なく使用します。 IPython自身が気づいていない日付時刻を使用しているようだDjango IPython sqliteは素朴な日付について不平を言います

/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をインストール

、両方 shellshell_plusは文句を言うようになりました。どのようにこれを修正することができますか?

EDIT:

私は、Djangoのタイムゾーンのサポートを無効にしたくありません。

+0

@PeterStahl真、それは限り、私はシェルから日付時刻を作成し、Djangoのモデルに保存し、また実行しないように、本当の問題ではありませんそれはおそらく夏時間の変更、等に近い年の "不確実な"時に... :)そして、そうでも、Djangoはおそらく警告をドロップするでしょう。しかし、まだ...まあ、それはいい見えません! :) – frnhr

+0

@PeterStahlは答えとしてそれを書くかもしれません... – frnhr

+1

これについて何をすべきかについてのDjangoの審議についてはhttps://code.djangoproject.com/ticket/19738を参照してください。今のところ美味しい解決策は提示されていない。 –

答えて

14

私は私の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) 
+0

まさにそれ!ブラボー! – frnhr

+3

偉大な、それは完全に動作します!このコードを置く場所をもっと正確にするために、あなたのDjangoプロジェクトの 'settings.py'ファイルに入れておけば十分です。そのために 'local_settings.py'という別のファイルを作成する必要はありません。 – pemistahl

+1

これをwarnings.filterwarnings( "ignore"、category = exceptions.RuntimeWarning、module = 'django.db.backends.sqlite3.base'、lineno = 53)に少し修正しなければなりませんでした。 – yellottyellott

-3

modify settings.py、USE_TZをFalseに設定するとこの問題は解決します。

+1

ええ、私はタイムゾーンのサポートを使用したいと思う: – frnhr

+7

-1。これは問題を解決するのではなく、Djangoの有用で重要なタイムゾーン設定を無効にすることによって回避されます。バージョン1.4では、素朴なdatetimesを使用することはお勧めしません。可能な場合は常に意識のある日時を使用してください。これは後で多くの問題からあなたを防ぎます。また、この警告メッセージはIPythonの動作に影響を及ぼさないため、タイムゾーンのサポートを無効にすることは意味がありません。 – pemistahl

12

私は同じ問題を抱えていますが、実際には問題ではないと思います。 IPythonは素朴なdatetimesを内部的に使用していると思われ、Djangoはそれについて警告します。 Djangoは、タイムゾーンサポートをオンにしたとき、およびそれがnaiveな日時を検出したときはいつも、この警告を送信します。私のマシンでは、この警告は、IPythonの起動時または終了時にのみ表示されます。この警告は、どのような方法でもIPythonでの作業には影響しません。したがって、IPythonの中で気づいた日時を安全に作成し、データベースに保存することができます。その警告を取り除くためには、おそらくIPythonの内部で作業する必要があります。

気づいた日時を使って作業する場合は、この目的でpytzを使用することを強くお勧めします。

+0

私は正直なところ、利用可能な最良のオプションはこれだと思います。 a.k.a.「それだけで生きている」 –