我编辑了一个将excel数据导入oracle的函数,并加入try-except代码块,导入sql有误的时候,函数会捕捉报错的信息,并将错误的信息和引发错误的sql语句加入提早创建好的空列表,然后打印报错信息和错误的sql,并自动停止循环导入的sql,但下面代码在捕捉到异常的时候,就直接执行break,不打印任何报错信息和sql,请问是因为try-except执行逻辑的问题,还是代码流程本身有问题呢?
def ora_program(name, df_im, sql_list, con_detail):
"""
:param df_im:
:param name:
:param sql_list:
:param con_detail:
"""
err_type = []
err_list = []
conn = cx_Oracle.connect(con_detail)
cursor = conn.cursor()
for sql in sql_list:
try:
if len(err_list) == 0:
if sql.startswith('create table'):
cursor.execute(sql)
else:
cursor.execute(sql)
conn.commit()
print("成功执行语句:{}".format(sql))
else:
cursor.execute('drop table YB_{} purge'.format(name.replace('.csv', '').replace('.xlsx', '')))
except DatabaseError as e:
err_type.append(e)
err_list.append(sql)
print(err_type, err_list)
print('导入数据格式有误,已执行删表操作,成功删除表YB_{}'.format(name.replace('.csv', '').replace('.xlsx', '')))
break
if len(err_list) == 0:
print('成功创建表“YB_{}”并插入{}条数据'.format(name.replace('.csv', '').replace('.xlsx', ''), len(df_im)))
cursor.close()
conn.close()