मैं एक शब्दकोश से डेटा को डेटाबेस में सम्मिलित करने का प्रयास कर रहा हूं। मैं डेटा प्रकार के आधार पर मूल्यों पर पुनरावृति करना चाहता हूं और उनके अनुसार प्रारूपित करना चाहता हूं। यहां उस कोड का एक स्निपेट दिया गया है जिसका मैं उपयोग कर रहा हूं:
def _db_inserts(dbinfo):
try:
rows = dbinfo['datarows']
for row in rows:
field_names = ",".join(["'{0}'".format(x) for x in row.keys()])
value_list = row.values()
for pos, value in enumerate(value_list):
if isinstance(value, str):
value_list[pos] = "'{0}'".format(value)
elif isinstance(value, datetime):
value_list[pos] = "'{0}'".format(value.strftime('%Y-%m-%d'))
values = ",".join(value_list)
sql = "INSERT INTO table_foobar ({0}) VALUES ({1})".format(field_names, values)
except Exception as e:
print 'BARFED with msg:',e
जब मैं कुछ सैंपल डेटा (नीचे देखें) का उपयोग करके एल्गो चलाता हूं, तो मुझे त्रुटि मिलती है:
TypeError: अनुक्रम आइटम 0: अपेक्षित स्ट्रिंग, int पाया गया
उपरोक्त त्रुटि देने वाले value_list डेटा का एक उदाहरण है:
value_list = [377, -99999, -99999, 'f', -99999, -99999, -99999, 1108.0999999999999, 0, 'f', -99999, 0, 'f', -99999, 'f', -99999, 1108.0999999999999, -99999, 'f', -99999, 'f', -99999, 'f', 'f', 0, 1108.0999999999999, -99999, -99999, 'f', 'f', 'f', -99999, 'f', '1984-04-02', -99999, 'f', -99999, 'f', 1108.0999999999999]
मैं क्या गलत कर रहा हूं?
values = ",".join(map(str, value_list))