2012-07-29 7 views
16

Ich habe ein neues Projekt in Django 1.4, mit SQLite db. Außerdem benutze django_extenstions 'shell_plus ohne Probleme.Django IPython SQLite beschwert sich über naive Datetime

Wenn ich installiert IPython, beide shell und shell_plus begann zu meckern:

/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. 

Es scheint IPython sich nicht bewusst Datetimes verwendet. Wie kann das behoben werden?

EDIT:

Ich will nicht Djangos Zeitzone Unterstützung deaktivieren.

+0

@PeterStahl wahr, es ist kein wirkliches Problem, solange ich sie Modelle Django nicht Datetimes von Shell erstellen und speichern, und auch tun dass in der "unsicheren" Jahreszeit wahrscheinlich Änderungen an der Sommerzeit, etc. etc. in der Nähe sind. Und trotzdem würde Django wahrscheinlich eine Warnung fallen lassen. Aber trotzdem ... Nun, es sieht nicht gut aus! :)) – frnhr

+0

@PeterStahl vielleicht schreiben, dass als Antwort ... – frnhr

+1

Siehe https://code.djangoproject.com/ticket/19738 für Django Überlegungen, was dazu zu tun ist. Bisher wurde keine schmackhafte Lösung präsentiert. –

Antwort

14

Ich habe dies in meiner 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

Genau das! Bravo! – frnhr

+3

Großartig, es funktioniert perfekt! Nur um ein bisschen genauer zu sein, wo dieser Code abgelegt werden soll: Es ist genug, um es in deine 'settings.py' Datei deines Django Projektes zu schreiben. Sie brauchen dafür keine andere Datei namens 'local_settings.py' zu erstellen. – pemistahl

+1

Ich musste dies ein wenig ändern, um zu warnings.filterwarnings ("ignorieren", category = Ausnahmen.RuntimeWarning, module = 'django.db.backends.sqlite3base', linneno = 53) – yellottyellott

-3

modify settings.py, set USE_TZ auf False würde dieses Problem lösen.

+1

Ja, aber ich möchte die Zeitzone unterstützen :) – frnhr

+7

-1. Dadurch wird das Problem nicht gelöst, sondern nur umgangen, indem die nützliche und wichtige Zeitzoneneinstellung von Django deaktiviert wird. Ab Version 1.4 wird es nicht empfohlen, naive Datumsangaben zu verwenden. Verwenden Sie immer bewusst Datum, wenn Sie können. Dies wird Sie später vor vielen Problemen bewahren. Außerdem hat diese Warnmeldung keinen Einfluss auf das Verhalten von IPython. Daher ist es nicht sinnvoll, die Zeitzonenunterstützung zu deaktivieren. – pemistahl

12

Ich habe das gleiche Problem, aber ich denke nicht, dass es wirklich ein Problem ist. IPython scheint intern naive Datumsangaben zu verwenden und Django warnt einfach davor. Django sendet diese Warnung immer dann, wenn Sie die Zeitzonenunterstützung aktivieren und wenn Sie eine naive Datetime feststellen. Auf meinem Computer wird diese Warnung nur angezeigt, wenn ich IPython starte oder schließe. Diese Warnung hat keinen Einfluss auf Ihre Arbeit mit IPython. So können Sie in der Regel vertrauliche Datumsangaben in IPython erstellen und diese auch in Ihrer Datenbank speichern. Um diese Warnung loszuwerden, müssten Sie wahrscheinlich an IPythons Interna arbeiten.

Bei der Arbeit mit bewusstem Datum im Allgemeinen, empfehle ich dringend, pytz für diesen Zweck zu verwenden.

+0

Ich denke ehrlich gesagt ist die beste verfügbare Option diese; a.k.a. "lebe einfach damit." –

Verwandte Themen