Надеюсь, проблема в том, как вы получаете доступ к фрейму данных Pandas. Например,Давайте рассмотрим примерный кадр данных,
temp = {'string' : ['text1', 'text10', 'text123'], 'string1': ['text1', 'text2', 'text3']}
, когда вы выполняете итерацию, как в вашем коде,
for i in temp:
print (i)
Здесь 'i' будет иметь значение имен столбцов врамка панд, а не фактические значения строки. И так, если имя столбца - «строка», i [0] - «s», i [1] - «t» и так далее. И именно поэтому вы получаете string index out of range error
.
Для итерации строк и получения значений вместо столбцов измените код на
for index, i in df.iterrows():
format_str = """INSERT INTO DB (ID,Start_time,Completion_time,...)
VALUES ({ID},'{Start_time}','{Completion_time}'...)
;"""
sql_command=format_str.format(ID=i[0],Start_time=i[1],
Completion_time=i[2],...)
cursor.execute(sql_command)
conn.commit()
cursor.close()
conn.close()