У меня есть список SQL-скриптов, которые я сузил и хочу выполнить.Данные в списке более или менее соответствуют этому шаблону:
[DROP TABLE ABC ....;, CREATE TABLE ABC ....;, INSERT INTO TABLE ABC .....;,UPDATE TABLE ABC .....;]
Затем они повторяются для следующей таблицы.Все это ограничивается одним списком ниже:
dfToList_P
Проблема, с которой я сталкиваюсь, заключается в том, что когда таблица не существует, я хочу игнорировать ошибку и выполнить инструкцию CREATE TABLE, которая следует за ней.Вот мой код:
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()
try:
for sql_script in dfToList_P:
#print(sql_script)
pd.read_sql(sql_script, s)
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)
Я гуглил вокруг и добавил условие try / Кроме того, но я не думаю, что на самом деле что-то делает в этом случае.
Запуск сценарияошибки с:
pandas.io.sql.DatabaseError: Execution failed on sql 'DROP TABLE ABC;': (3807, "[42S02] [Teradata][ODBC Teradata Driver][Teradata Database](-3807)Object 'ABC' does not exist.")
Есть идеи?