при добавлении строк в таблицу mysql с пандами 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
Это решение некрасиво и нестабильно, поэтому я буду признателен за ваш совет!