कुछ कोड जो मैं पायथन में लिख रहा हूं, वह struct_time प्रारूप (9 args के साथ) में एक सर्वर से एक तारीख लेता है।

मैं इस तिथि को SQL डेटाबेस में कैसे संग्रहीत कर सकता हूं, और समय क्षेत्र और struct_time से आने वाली सभी अतिरिक्त जानकारी रखते हुए इस तिथि को struct_time के रूप में वापस पढ़ने में सक्षम हो सकता हूं?

मैंने सीधे SQL में struct_time डालने का प्रयास किया

struct_date = time.struct_time(tm_year=2020, tm_mon=9, tm_mday=10, tm_hour=22, tm_min=31, tm_sec=4, tm_wday=3, tm_yday=254, tm_isdst=0)
cursor.execute("UPDATE dbo.RSS_Links SET last_update=? WHERE link=?;", struct_date, links)
> "A TVP's rows must be Sequence objects.", 'HY000'

मैं नीचे का उपयोग कर डेटाबेस में समय डाल सकता हूं, लेकिन मुझे नहीं लगता कि स्ट्रेटटाइम में कनवर्ट करते समय टाइमज़ोन कहां रखा जाता है।

date_to_store = time.strftime("%Y-%m-%d %H:%M:%S", struct_date)
0
notverygood 22 सितंबर 2020, 16:45

1 उत्तर

सबसे बढ़िया उत्तर

मैं इनमें से किसी एक को करने का अत्यधिक सुझाव दूंगा (इस विशिष्ट क्रम में):

  1. अंतर्निहित DATETIME डेटा प्रकार का उपयोग करें और सभी तिथियों को UTC में संग्रहीत करें
  2. युग में दिनांक संग्रहीत करने के लिए LONG/BIGINT प्रकार का उपयोग करें
  3. अंतर्निहित DATETIME प्रारूप का उपयोग करें जो समय क्षेत्र की जानकारी संग्रहीत कर सकता है

तारीखों को तार के रूप में संग्रहीत न करें, इसे struct_time या किसी अन्य संरचना/वर्ग के साथ न जोड़ें, आपको बाद में पछतावा होगा :)

आपके एप्लिकेशन में डेटा स्तर होना चाहिए, जो डेटा क्रमबद्धता/deserialization को संभालेगा।

1
Evaldas Buinauskas 28 सितंबर 2020, 07:13