আমি একটি অভিধান থেকে ডেটাবেসে ডেটা toোকানোর চেষ্টা করছি। আমি মানগুলির পুনরাবৃত্তি করতে চাই এবং সেই অনুসারে সেগুলি ফর্ম্যাট করতে চাই, ডাটা টাইপের উপর নির্ভর করে। আমি যে কোডটি ব্যবহার করছি তার একটি স্নিপেট এখানে দেওয়া হয়েছে:
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 = [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))