2
我想從xlsx文件插入數據到mysqdl表中。我想插入數據在表中,如果主鍵上有重複,我想更新現有的數據,否則插入。我已經寫了腳本,但我意識到這是太多的工作,使用熊貓它很快。我如何在熊貓中實現它?插入或更新,如果存在使用熊貓的mysql
#!/usr/bin/env python3
import pandas as pd
import sqlalchemy
engine_str = 'mysql+pymysql://admin:[email protected]/mydb'
engine = sqlalchemy.create_engine(engine_str, echo=False, encoding='utf-8')\
file_name = "tmp/results.xlsx"
df = pd.read_excel(file_name)
我試圖避免SQL查詢本身的原因是因爲我收到的Excel經常有列值,這些列值在我可以創建查詢並插入到數據庫之前被轉義。我之所以希望pandas能非常有效地處理列值,如果有一種方法可以使用熊貓來直接插入數據,而不是執行sql查詢,這將幫助我繞過隨機值(或垃圾數據)的轉義。 – r0xette
@ r0xette我不明白你爲什麼不能使用SQL查詢。你確定你不能改變列名或什麼?無論如何,使用'sqlalchemy'可以讓你避免顯式的SQL字符串查詢。 AFAIK,Pandas沒有插入vs更新行的本地方式 – cd98
我現在通過轉義雙引號等方式使用SQL查詢。如果有本地執行upsert的方法,那麼我希望能夠自動轉義不良數據。 – r0xette