Таблица пакетного CREATE в Python для Oracle с откатом при ошибке - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать набор таблиц в oracle динамически, используя соединитель Python cx_ Oracle. Вот что у меня есть:

#dynamically obtained create table queries
query_list = ['CREATE TABLE TABLE1(...','CREATE TABLE TABLE2(...','...']

try:
getConnection()
c = con.cursor()
for query in query_list:
   c.execute(query)
con.close()
except Exception as e:
    print(e)

Таблицы создаются отлично. Но я хочу откатить / отбросить таблицы, уже созданные, если пакетное выполнение завершилось неудачно на полпути. Поскольку DDL запрашивает автоматическую фиксацию при выполнении, существует ли обходной путь, чтобы либо все таблицы были созданы, либо ни одной.

1 Ответ

0 голосов
/ 17 апреля 2020

Вы не можете "откатить" DDL. тем не менее, вы можете определить, существует ли таблица, например:

SELECT count(*)  FROM user_tables where table_name = 'TABLE1';

l oop во всех таблицах, и если сумма count (*) <> 0, то существует одна или несколько таблиц, и вы можете бросить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...