2012-07-29 9 views
16

Ho un nuovo progetto in Django 1.4, usando sqlite db. Anche usando shell_plus di django_extenstions senza problemi.La sqlite di Django IPython si lamenta dell'ingenuo datetime

Quando ho installato IPython, sia shell e shell_plus iniziato a lamentarsi:

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

Sembra IPython stesso utilizza datetimes inconsapevoli. Come si puo aggiustare?

EDIT:

Io non voglio disabilitare il supporto fuso orario di Django.

+0

@PeterStahl vero, non è un vero problema, finché io non creo datetimes dal guscio e salvarli modelli Django, e anche fare che al momento "incerto" dell'anno probabilmente si avvicina alle modifiche all'ora legale, ecc. ecc ... :) E anche così, Django probabilmente lascerebbe un avviso. Ma comunque ... Beh, non sembra carino! :)) – frnhr

+0

@PeterStahl può scrivere come risposta ... – frnhr

+1

Vedere https://code.djangoproject.com/ticket/19738 per le deliberazioni di Django su cosa fare a riguardo. Finora non è stata presentata alcuna soluzione accettabile. –

risposta

14

ho messo nel mio 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

Esattamente quello! Bravo! – frnhr

+3

Ottimo, funziona perfettamente! Solo per essere un po 'più preciso su dove inserire questo codice: è sufficiente inserirlo nel tuo file 'settings.py' del tuo progetto Django. Non è necessario creare un altro file chiamato 'local_settings.py' per quello. – pemistahl

+1

Ho dovuto modificarlo un po 'per warnings.filterwarnings ("ignore", category = exceptions.RuntimeWarning, module =' django.db.backends.sqlite3.base ', lineno = 53) – yellottyellott

-3

modificare settings.py, impostare USE_TZ su False risolverebbe questo problema.

+1

Sì, ma desidero utilizzare il supporto del fuso orario :) – frnhr

+7

-1. Questo non risolve il problema ma lo elude semplicemente disattivando l'utile e importante impostazione del fuso orario di Django. A partire dalla versione 1.4, non è consigliabile utilizzare datazioni naive. Usa sempre il tempo di risposta consapevole se puoi. Ciò ti impedirà in seguito un sacco di problemi. Inoltre, questo messaggio di avviso non influenza in alcun modo il comportamento di IPython, quindi non ha senso disattivare il supporto del fuso orario. – pemistahl

12

Ho lo stesso problema ma non penso che sia davvero un problema. IPython sembra utilizzare internamente datazioni ingenue e Django ne mette in guardia. Django invia sempre questo avviso quando si attiva il supporto del fuso orario e ogni volta che rileva un datetime ingenuo. Sulla mia macchina, questo avviso appare solo quando avvio o chiudi IPython. Questo avvertimento non influenza in alcun modo il tuo lavoro con IPython. In questo modo è possibile creare in modo sicuro i dati personali normalmente presenti in IPython e salvarli nel proprio database. Per liberarti di questo avviso, probabilmente dovresti lavorare sugli interni di IPython.

Quando si lavora con tempi di trasmissione dati in generale, si consiglia vivamente di utilizzare pytz per questo scopo.

+0

Penso onestamente che l'opzione migliore disponibile sia questa; a.k.a. "vivi e basta." –

Problemi correlati