to_sql添加列(如果不存在)(sqlalchemy mysql)

时间:2019-09-29 07:22:47

标签: pandas sqlalchemy

使用大熊猫to_sql

一样将行附加到mysql表中
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

此解决方案难看且不稳定,因此,我感谢您的建议!

0 个答案:

没有答案