python - 使用 python 将 pandas 数据框导入 MS Access 表
问题描述
我对 python 很陌生,正在尝试为我的工作实现一些自动化。目前我正在尝试通过 python 使用来自 CSV 的数据更新 Access 表。到目前为止,我已将 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 开始,而不是使用 python 的 0),并确保我从 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
解决方案
“我已经查找了造成这种情况的典型原因,据说是错误的索引(即从 1 开始而不是 python 的 0),并确保我从 0 索引开始。”
当您超出预期数据或到达文件末尾时也会导致此问题。
例如。
>>t = (1,2,3)
>>t(2)
3
>>t(3)
IndexError: tuple index out of range
请检查这个。此外,如果这不起作用,请将“data.csv”上传到您的驱动器并发送可共享链接,以便我们可以运行代码并对其进行测试。
推荐阅读
- angular - 程序网格的一部分在 ThreeJS 中不可见
- raspberry-pi - 树莓派 4b v1.1 k8s集群USB集线器电源
- symfony - Symfony 4 with Doctrine - 保存 ManyToOne
- angular - 如何确保角度反应形式 setValue/patchvalue 完整
- jquery - 为什么在我的 laravel 项目中使用mentionsInput 时没有得到任何响应
- scipy - 为什么 scipy.signal.stft() 中的采样频率数与跳数有关?
- python-3.x - 根据行 ID 创建 URN
- swift - MKMapView 中的可触摸和数据驱动的覆盖(多边形),带有来自 geoJson 的数据
- javascript - microsoft edge mobile ios 13.3.1 中的 navigator.mediaDevices
- database - 是否有可能使 SQLite 中的文本字段指向不同的字段?