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