使用大熊猫to_sql
像
df.to_sql('table_name', engine, if_exists='append')
附加的df
可能包含一些新列,这在mysql table_name
中不存在,
所以,我得到了pymysql.err.InternalError触发:
InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'new_columns' in 'field list'")
在尝试捕获此异常以将new column
添加到mysql表时,由于某种原因,我无法捕获pymysql.err.InternalError
异常,因此我尝试使用一种类似BaseException
的怪异方法这个:
while True:
try:
df.to_sql(table_name, engine, if_exists='append')
except BaseException as e:
b = e.args
missing_column = b[0].split('(pymysql.err.InternalError) (1054, "Unknown column \'')[1].split(' in \'field list\'")')[0].replace("'",'')
with sql.engine.connect() as con:
con.execute(f'ALTER TABLE {table_name} ADD COLUMN {missing_column} TEXT;')
else: break
此解决方案难看且不稳定,因此,我感谢您的建议!