我想出来了,多亏了上面的评论。首先,我的Try/Except位于错误的位置,而且我从使用pandas read_sql切换到只使用常规会话execute,它按预期工作。如果表存在,请先删除它,如果不存在,请先创建它。
修订代码如下:
def load_test_table(self):
s = self.connection()
df = self.retrieve_sql()
df_P = df.loc[df['STEP_TYPE'] == 'P']
dfToList_P = df_P['SQL_SCRIPT'].tolist()
for sql_script in dfToList_P:
try:
s.execute(sql_script)
except teradata.DatabaseError as ex:
sql_state = ex.args[0]
if sql_state == 3807:
print('Tried to DROP table that did not exist:' + sql_script)
else:
print('DatabaseError in SQL Script: ' + sql_script)
continue