Страница 1 из 1

Как программно закрыть все таблицы и соединения с БД?

Добавлено: 23 ноя 2023, 15:42
Alex_Y
Здравствуйте.
Собственно вопрос в теме. Как программно закрыть все таблицы и соединения с БД?
В MapBasic-ке есть команды Close All и Server Disconnect. В аксиоме что-то не могу найти. Только конкретную таблицу.
Подскажите, добрые люди :)

Re: Как программно закрыть все таблицы и соединения с БД?

Добавлено: 23 ноя 2023, 17:52
Дмитрий
Здравствуйте!

К сожалению, на данный момент класс подключения не вынесен в интерфейс питона. Для закрытия всех объектов можно сделать так:

for t in data_manager.all_objects:
t.close()

Или попробовать закрыть таблицы с фильтром по наименованию провайдера

for t in data_manager.tables:
if print(t.provider =='PgDataProvider'):
t.close()


В ближайшем релизе планируем вынести класс, который отвечает за единое соединение группы объектов.

Re: Как программно закрыть все таблицы и соединения с БД?

Добавлено: 27 ноя 2023, 08:27
Alex_Y
При выполнении первого кода выдает "Нeвозможно закрыть косметический слой":
RuntimeError: It is not allowed to close cosmetic table

Попробовал сделать

Код: Выделить всё

for t in data_manager.tables:
    t.close()
Но тогда окно карты закрывается не сразу, а через какое-то время. И если сразу вызывать какие-то команды, например диалог, то окно остается открытым.
Каким образом мне дождаться завершения полного закрытия, а только потом продолжить работу?

Upd: Пока победил тем, что сначала закрываю все карты, а только потом таблиц.