2012-07-29 18 views
16

के बारे में शिकायत करता है मेरे पास स्क्लाइट डीबी का उपयोग करते हुए Django 1.4 में एक नई परियोजना है। बिना किसी समस्या के django_extenstions 'shell_plus का भी उपयोग करना।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 ही अनजान datetimes उपयोग करता है:

जब मैं IPython स्थापित, दोनों shell और shell_plus शिकायत करने के बारे में शुरू कर दिया। इसे कैसे सुधारा जा सकता है?

संपादित करें:

मैं Django के समय क्षेत्र समर्थन निष्क्रिय करने के लिए नहीं करना चाहती।

+0

@PeterStahl सच है, यह एक वास्तविक समस्या नहीं है, जब तक मैं खोल से datetimes बनाने के रूप में नहीं है और उन्हें Django मॉडल को बचाने के लिए, और भी करना कि साल के "अनिश्चित" समय पर शायद डेलाइट सेविंग चेंज इत्यादि के करीब ... :) और फिर भी, Django शायद एक चेतावनी छोड़ देगा। लेकिन फिर भी ... अच्छा, यह अच्छा नहीं लग रहा है! :)) – frnhr

+0

@ पीटर स्टाहल शायद इसे उत्तर के रूप में लिखें ... – 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 प्रोजेक्ट की अपनी 'सेटिंग्स.py' फ़ाइल में रखना पर्याप्त है। इसके लिए आपको 'local_settings.py' नाम की एक और फ़ाइल बनाने की आवश्यकता नहीं है। – pemistahl

+1

मुझे इसे चेतावनियों में थोड़ा सा संशोधित करना पड़ा। फिल्टरवार्निंग्स ("अनदेखा करें", श्रेणी = अपवाद। रनटाइम चेतावनी, मॉड्यूल = 'django.db.backends.sqlite3.base', lineno = 53) – yellottyellott

-3

सेटिंग्स.py संशोधित करें, यूएसE_TZ को गलत करने के लिए सेट करें इस समस्या को हल करेगा।

+1

हाँ, लेकिन मैं टाइमज़ोन समर्थन का उपयोग करना चाहता हूं :) – frnhr

+7

-1। यह समस्या का समाधान नहीं करता है लेकिन Django की उपयोगी और महत्वपूर्ण टाइमज़ोन सेटिंग को निष्क्रिय करके बस इसे रोकता है। संस्करण 1.4 के अनुसार, बेवकूफ डेटाटाइम का उपयोग करने की अनुशंसा नहीं की जाती है। यदि आप कर सकते हैं तो हमेशा जागरूक डेटाटाइम का उपयोग करें। यह आपको बाद में कई समस्याओं से बचाएगा। साथ ही, यह चेतावनी संदेश किसी भी तरह से आईपीथन के व्यवहार को प्रभावित नहीं करता है, इसलिए टाइमज़ोन समर्थन को निष्क्रिय करने के लिए यह समझ में नहीं आता है। – pemistahl

12

मेरे पास एक ही समस्या है लेकिन मुझे नहीं लगता कि यह वास्तव में एक समस्या है। आईपीथन आंतरिक रूप से बेवकूफ डेटाटाइम का उपयोग करता प्रतीत होता है और Django बस इसके बारे में चेतावनी देता है। जब आप टाइमज़ोन समर्थन चालू करते हैं और जब भी यह एक बेवकूफ डेटाटाइम का पता लगाता है तो Django हमेशा इस चेतावनी भेजता है। मेरी मशीन पर, यह चेतावनी केवल तब दिखाई देती है जब मैं आईपीथन शुरू या बंद करता हूं। यह चेतावनी आपके काम को किसी भी तरह से आईपीथन के साथ प्रभावित नहीं करती है। तो आप सामान्य रूप से आईपीथॉन के अंदर जागरूक डेटाटाइम बना सकते हैं और उन्हें अपने डेटाबेस में भी सहेज सकते हैं। उस चेतावनी से छुटकारा पाने के लिए, आपको शायद आईपीथन के आंतरिक पर काम करना होगा।

सामान्य रूप से जागरूक डेटाटाइम्स के साथ काम करते समय, मैं इस उद्देश्य के लिए pytz का उपयोग करने की दृढ़ता से अनुशंसा करता हूं।

+0

मुझे लगता है कि ईमानदारी से उपलब्ध सर्वोत्तम विकल्प यह है; ए.के.ए. "बस इसके साथ रहो।" –