Я довольно новичок в python и пытаюсь внедрить некоторую автоматизацию для моей работы.В настоящее время я пытаюсь обновить таблицу доступа с данными из CSV через Python.До сих пор я считал CSV в кадр данных pandas и пытаюсь добавлять строки по одной в Access.Это то, что у меня есть:
import pandas as pd
import pypyodbc
import glob
df = pd.read_csv("data.csv", header = 0, low_memory = False)
df = df[['Description','SN','Attribute_1','Attribute_2',\
'Attribute_3','Attribute_4','Cost','Date']]
con = pypyodbc.connect('DRIVER={Microsoft Access Driver \
(*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;\
PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS\
Access;DriverId=25;DefaultDir= \
C:/Users/testuser/Documents;DBQ=C:/Users/testuser/ \
Documents/Python/test.mdb;')
cursor = con.cursor()
for row in df.iterrows():
cursor.execute("INSERT INTO test.table1([Description],[SN],
[Attribute_1], [Attribute_2],[[Attribute_3],[Attribute_4],\
[Cost],[Date]) values (?,?,?,?,?,?,?,?)", (row[0], row[1] ,\
row[2], row[3], row[4], row[5], row[6], row[7]))
con.commit()
cursor.close()
con.close()
Всякий раз, когда я запускаю это, я получаю сообщение об ошибке
IndexError: tuple index out of range
Я искал типичную причину этого, котораяСчитается, что индексация неправильная (т. е. начинается с 1 вместо 0 с Python), и гарантируется, что я начал с 0 индекса.
Я также посмотрел везде, где могу найти документацию о том, как работает команда cursor.execute, но я все еще в замешательстве и не уверен, что у меня есть правильный синтаксис для этого оператора.Любая помощь будет оценена!
Пример данных:
Description SN Attr_1 Attr_2 Attr_3 Attr_4 Cost Date
type_a 12938475 shiney black hard a 1.09 7/20/18
type_b 18293940 matt silver soft b 0.56 7/20/2018
type_d 18283940 matt gray soft c 0.78 7/16/2018
type_a 18944938 shiney silver medium d 3.4 7/18/2018
type_a 17485003 matt silver hard v 2.3 7/17/2018