我想「插入忽略」整個熊貓數據框到mysql中。有沒有辦法做到這一點沒有循環的行?插入忽略熊貓數據框到mysql
在dataframe.to_sql中,我只能看到選項if_exists'追加',但這仍然會繼續重複的唯一鍵嗎?
我想「插入忽略」整個熊貓數據框到mysql中。有沒有辦法做到這一點沒有循環的行?插入忽略熊貓數據框到mysql
在dataframe.to_sql中,我只能看到選項if_exists'追加',但這仍然會繼續重複的唯一鍵嗎?
在pandas中沒有辦法做到這一點,直到pandas (0.20.3)
的當前版本。
選項if_exists
僅適用於documentation中所述的表(不在行上)。
if_exists : {‘fail’, ‘replace’, ‘append’}, default ‘fail’
fail
:如果表存在,什麼也不做。
replace
:如果表存在,請刪除它,重新創建它並插入數據。
append
:如果存在表,則插入數據。創建如果不存在。
通過循環
這將放慢因爲你是在一個時間
for x in xrange(data_frame.shape[0]):
try:
data_frame.iloc[x:x+1].to_sql(con=sql_engine, name="table_name", if_exists='append')
except IntegrityError:
# Your code to handle duplicates
pass
考慮使用臨時表(用決賽桌的確切結構)插入一個一行的過程總是被取代大熊貓然後在光標調用運行INSERT IGNORE
:
dataframe.to_sql('myTempTable', con, if_exists ='replace')
cur = con.cursor()
cur.execute("INSERT IGNORE INTO myFinalTable SELECT * FROM myTempTable")
con.commit()
將最後3行這樣的,如果你正在使用的SQLAlchemy: '連接= engine.con nect() result = connection.execute(「INSERT IGNORE INTO myFinalTable SELECT * FROM myTempTable」) connection.close()' – kristian