कल्पना कीजिए कि आपके पास बड़ी मात्रा में आइटम के साथ एक महत्वपूर्ण मूल्य पायथन शब्दकोश (या सूची) है। आइए मान लें कि आप एक बड़ी JSON फ़ाइल पढ़ रहे हैं और आप इसकी सामग्री को MySQL तालिका में कुंजी के साथ कॉलम और मानों के नाम के रूप में कुंजी के रूप में स्टोर करना चाहते हैं।एसक्यूएल डेटाबेस में पायथन शब्दकोश/सूचियों को सम्मिलित करने का सबसे प्रभावी तरीका क्या है?
JSON उदाहरण:
INSERT INTO TABLE (city, state_name, country_iso3166, latitude, longitude) VALUES('%s','%s','%s','%s','%s')
% (Bratislava, Slovakia, SK, 48.20000076, 17.20000076);
(ठीक है, यह पाँच मूल्यों के साथ ठीक है, लेकिन सोच भी वहाँ उदाहरण पाँच के लिए कर रहे हैं:
"display_location": {
"city":"Bratislava",
"state_name":"Slovakia",
"country_iso3166":"SK",
"latitude":"48.20000076",
"longitude":"17.20000076",
}
तो यह इस मैन्युअल रूप से की तरह एसक्यूएल डालने लिखने के लिए काफी अक्षम है उनमें से सैकड़ों।)
क्या प्रभावी और शॉर्ट-स्ट्रिंग एसक्यूएल डालने के लिए कोई पायथन कक्षा/विधि है?
for key,value in list.iteritems():
value_type = type(value)
if value_type is unicode:
vars_to_sql.append(value.encode('ascii', 'ignore'))
keys_to_sql.append(key.encode('ascii', 'ignore'))
else:
vars_to_sql.append(value)
keys_to_sql.append(key)
keys_to_sql = ', '.join(keys_to_sql)
उसके बाद डालने और अधिक सरल लग रहा है:
INSERT INTO conditions_bratislava(%s) VALUES %r" % (keys_to_sql, tuple(vars_to_sql),)
मूल्यों के हजारों नहीं हो सकता है और आप अभी भी यह एक डालने बयान के साथ ठीक हो जाएगा मैं कोड के इस टुकड़े लिखा था।
नोट करें कि स्थिति जो यूनिकोड स्ट्रिंग को डीकोड करेगी, इसलिए आपके पास प्रत्येक मान से पहले "यू" अक्षर नहीं होंगे।
तो, क्या कोई और अधिक प्रभावी और तैयार कक्षा या विधि है जो कम INSERT स्ट्रिंग के साथ एक ही सरल दृष्टिकोण में कई मानों को सम्मिलित करने के तरीके है?
यदि आप एक रिलेशनल डेटाबेस का उपयोग करना चाहते हैं, तो शायद आगामी PostgreSQL 9.2 का उपयोग करें जिसमें मूल JSON डेटाटाइप है। –