मैं स्क्लाक्लेमी के साथ काम कर रहा हूं, और मुझे अभी तक यकीन नहीं है कि मैं किस डेटाबेस का उपयोग करूंगा, इसलिए मैं जितना संभव हो डीबी-अज्ञेयवादी के रूप में रहना चाहता हूं। मैं एक विशिष्ट डेटाबेस में खुद को टाई बिना डीबी में टाइमज़ोन-जागरूक डेटाटाइम ऑब्जेक्ट कैसे स्टोर कर सकता हूं? अभी, मैं यह सुनिश्चित कर रहा हूं कि डीबी में उन्हें स्टोर करने से पहले यूटीसी समय हो, और डिस्प्ले-टाइम पर स्थानीयकरण में परिवर्तित हो जाए, लेकिन यह सुरुचिपूर्ण और भंगुर महसूस करता है। क्या डीबी से बाहर निकलने वाले डाटाटाइम ऑब्जेक्ट्स प्राप्त करने के बजाय एसक्यूएलकेमी से टाइमज़ोन-जागरूक डेटाटाइम प्राप्त करने के लिए कोई डीबी-अज्ञेय तरीका है?क्या सक्लाक्चेमी डेटटाइम ऑब्जेक्ट्स केवल बेवकूफ हो सकते हैं?
22
A
उत्तर
40
पैरामीटर DateTime
कॉलम समय पर पैरामीटर है, इसलिए टाइमज़ोन-जागरूक datetime
ऑब्जेक्ट्स को संग्रहीत करने में कोई समस्या नहीं है। हालांकि मैं सरल प्रकार डेकोरेटर के साथ स्वचालित रूप UTC से datetime
संग्रहीत कन्वर्ट करने के लिए सुविधाजनक पाया:
from sqlalchemy import types
from dateutil.tz import tzutc
from datetime import datetime
class UTCDateTime(types.TypeDecorator):
impl = types.DateTime
def process_bind_param(self, value, engine):
if value is not None:
return value.astimezone(tzutc())
def process_result_value(self, value, engine):
if value is not None:
return datetime(value.year, value.month, value.day,
value.hour, value.minute, value.second,
value.microsecond, tzinfo=tzutc())
ध्यान दें, कि अच्छी तरह से व्यवहार करने के तरीके यदि आपने गलती से अनुभवहीन datetime
का उपयोग (अर्थात यह एक ValueError बढ़ा देंगे) है।
संबंधित मुद्दे
- 1. क्या सादा जावास्क्रिप्ट ऑब्जेक्ट्स में ईवेंट हो सकते हैं?
- 2. डेटटाइम ऑब्जेक्ट्स
- 3. क्या मॉड्यूल में वही गुण हो सकते हैं जो ऑब्जेक्ट्स कर सकते हैं?
- 4. क्या सी ++ कन्स्ट्रक्टर्स टेम्पलेट्स हो सकते हैं?
- 5. क्या मॉड्यूल में गुण हो सकते हैं?
- 6. क्या एनएसएसटींग स्थिरांक कमजोर हो सकते हैं?
- 7. स्थिर वर्गों में केवल स्थिर सदस्य क्यों हो सकते हैं?
- 8. IDISposable चाहिए। प्रदर्शन() कार्यान्वयन बेवकूफ हो?
- 9. क्या किसी सरणी में पूर्णांक हो सकते हैं और
- 10. क्या हम जेवीएम मेमोरी में ऑब्जेक्ट्स देख सकते हैं?
- 11. डेटटाइम ऑब्जेक्ट्स के डब्ल्यूसीएफ Deserialization को संभालना
- 12. क्या एक सेवा में कई एंडपॉइंट्स हो सकते हैं?
- 13. नामित विधियों वाले ऑब्जेक्ट्स के लिए सी ++ फ़ैक्टर बेहतर क्यों हो सकते हैं?
- 14. सीएसएस में, क्या एचएसएल मान फ़्लोट हो सकते हैं?
- 15. क्या विदेशी कुंजी वाले टेबल कॉलम शून्य हो सकते हैं?
- 16. जेनरेटर क्यों मसालेदार नहीं हो सकते हैं?
- 17. क्या आईफोन ऐप्स स्टार्ट-अप पर शुरू हो सकते हैं?
- 18. क्या कर सकते हैं कि sed क्या कर सकते हैं?
- 19. डीएजी में कितने किनारे हो सकते हैं?
- 20. टेम्पलेट्स 'वर्चुअल' नहीं हो सकते हैं
- 21. वेरटेक्स ऐरे ऑब्जेक्ट्स क्या हैं?
- 22. रूबी फाइबर समवर्ती हो सकते हैं?
- 23. क्या एक्सएसएलटी प्रोसेसर बहु-थ्रेडेड हो सकते हैं?
- 24. क्या दो वर्ग एक-दूसरे से मित्र हो सकते हैं?
- 25. क्या एक HTML तत्व में मनमाना गुण हो सकते हैं?
- 26. क्या केकेपीएचपी में मॉडल के कई टेबल हो सकते हैं?
- 27. क्या सी ++ असाइनमेंट ऑपरेटर मुफ्त फ़ंक्शन हो सकते हैं?
- 28. क्या एक संस्करण सरणी में 0 तत्व हो सकते हैं?
- 29. क्या वाईएएमएल एंकर/संदर्भ फाइल/दस्तावेजों में हो सकते हैं?
- 30. क्या एक डीएफए में ईपीएसलॉन/लैम्ब्डा संक्रमण हो सकते हैं?
यह लिखित रूप में काम नहीं करता है, इसे 'process_bind_param' में एक मामूली tweak की आवश्यकता है:' def process_bind_param (self, value, engine): \ n यदि मान कोई नहीं है: \ n यदि value.tzinfo कोई नहीं है: \ n वापसी value.replace (tzinfo = tzutc()) \ n else: \ n वापसी value.astimezone (tzutc()) ' –
@ जेसे ढिल्लों: बेवकूफ डेटाटाइम ऑब्जेक्ट्स के आकस्मिक भंडारण को रोकने के लिए जानबूझकर है, जबकि आपकी नुस्खा गलत तरीके से किसी को छेड़छाड़ करती है यूटीसी होने के नाते किसी भी समय क्षेत्र के साथ डेटाटाइम। –
@ डेनिस, तो अपने प्रकार का उपयोग करके, किसी को केवल टाइमज़ोन-जागरूक 'डेटाटाइम' ऑब्जेक्ट्स बनाने और स्टोर करने की उम्मीद है? अब जब मैं समझता हूं कि, मुझे आपके समाधान को और अधिक पसंद है क्योंकि उपयोगकर्ता को यह जानने की आवश्यकता है कि वे क्या सहेज रहे हैं। –