Q
从熊猫数据框中
1
A
回答
1
不幸的是,MS接入(特别是其磁盘级喷气/ ACE引擎不GUI .exe程序)不支持SQLAlchemy以允许pandas.to_sql()
方法,理想情况下,您可以将数据库推送到数据库中的临时表以运行UPDATE final INNER JOIN temp ...
查询来更新最终表,这是一个更快的方法而不是遍历行。
幸运的是,MS Access的Jet/ACE引擎可以查询csv文件,就好像它们是指定文件路径的表,然后指定csv文件的名称一样。因此,请考虑导出数据帧to_csv,然后使用Make-Table查询创建临时表,最后运行更新连接查询。如果存在,则使用低于try/except
来删除该表(因为IF EXISTS
命令在MS Access SQL中不可用)。
df.to_csv('C:\Path\To\CSV\Output.csv', index=False)
try:
cursor.execute("SELECT * INTO tblhis_ventas_Temp" +\
" FROM [text;HDR=Yes;FMT=Delimited(,);Database=C:\Path\To\CSV].Output.csv")
conn.commit()
cursor.execute("UPDATE tblhis_ventas f INNER JOIN tblhis_ventas_Temp t" + \
" ON f.contrato = t.contrato AND f.estado = t.estado" + \
" SET f. portabilidad = t.portabilidad")
conn.commit()
except Exception as e:
if 'already exists' in str(e):
cursor.execute("DROP TABLE tblhis_ventas_Temp")
conn.commit()
else:
print(e)
cursor.close()
conn.close()
不,我们不能直接使用CSV文件中UPDATE
查询(绕过临时表的过程)作为CSV是只读的,而不是更新记录。有趣的是,您可以在INSERT...SELECT
中使用CSV。
0
迭代行,并更新逐一:
sql = 'UPDATE tblhis_ventas SET portabilidad = ? WHERE contrato = ? and estado = ?'
for index, row in df.iterrows():
cursor.execute(sql, [row['portabilidad'], row['contrato'], row['estado']])
相关问题
- 1. 从熊猫数据框中
- 2. 选择日从熊猫数据框中
- 3. 生成从熊猫数据框中
- 4. 调用从熊猫数据框中
- 5. 数据框中熊猫
- 6. Python:从熊猫数据框爆炸行
- 7. 熊猫数据框绘图
- 8. 熊猫数据框 - 列转
- 9. 熊猫数据框筛选
- 10. 熊猫:写入数据框
- 11. 熊猫数据框到AnguarJS
- 12. 熊猫数据框合并
- 13. 熊猫数据框中的颜色数
- 14. 熊猫数据框中特别计数
- 15. Python 2.7替换熊猫数据框中的一个熊猫DF
- 16. 在Python中分割大熊猫熊猫数据框
- 17. 从熊猫数据框中删除部分无效数据(Python)
- 18. 从python变量载入数据到熊猫数据框中
- 19. 熊猫:增加值数据框中
- 20. 在熊猫数据框中插入值
- 21. 熊猫:创建数据框中
- 22. 大熊猫数据框中:的的.index
- 23. 在unittest中创建熊猫数据框
- 24. 在熊猫数据框中乘以行
- 25. 熊猫数据框中添加列GROUPBY
- 26. 列在熊猫数据框中的行
- 27. 熊猫数据框中的动态行
- 28. 熊猫数据框中唯一值
- 29. 熊猫数据框中列出字典
- 30. 展开数据框中使用熊猫
它的作品!速度非常快。我不知道ms访问中的临时csv文件。我非常感谢你们所有人。 – calobeto