Здравствуйте.
Собственно вопрос в теме. Как программно закрыть все таблицы и соединения с БД?
В MapBasic-ке есть команды Close All и Server Disconnect. В аксиоме что-то не могу найти. Только конкретную таблицу.
Подскажите, добрые люди
Как программно закрыть все таблицы и соединения с БД?
Re: Как программно закрыть все таблицы и соединения с БД?
Здравствуйте!
К сожалению, на данный момент класс подключения не вынесен в интерфейс питона. Для закрытия всех объектов можно сделать так:
for t in data_manager.all_objects:
t.close()
Или попробовать закрыть таблицы с фильтром по наименованию провайдера
for t in data_manager.tables:
if print(t.provider =='PgDataProvider'):
t.close()
В ближайшем релизе планируем вынести класс, который отвечает за единое соединение группы объектов.
К сожалению, на данный момент класс подключения не вынесен в интерфейс питона. Для закрытия всех объектов можно сделать так:
for t in data_manager.all_objects:
t.close()
Или попробовать закрыть таблицы с фильтром по наименованию провайдера
for t in data_manager.tables:
if print(t.provider =='PgDataProvider'):
t.close()
В ближайшем релизе планируем вынести класс, который отвечает за единое соединение группы объектов.
Re: Как программно закрыть все таблицы и соединения с БД?
При выполнении первого кода выдает "Нeвозможно закрыть косметический слой":
RuntimeError: It is not allowed to close cosmetic table
Попробовал сделать
Но тогда окно карты закрывается не сразу, а через какое-то время. И если сразу вызывать какие-то команды, например диалог, то окно остается открытым.
Каким образом мне дождаться завершения полного закрытия, а только потом продолжить работу?
Upd: Пока победил тем, что сначала закрываю все карты, а только потом таблиц.
RuntimeError: It is not allowed to close cosmetic table
Попробовал сделать
Код: Выделить всё
for t in data_manager.tables:
t.close()
Каким образом мне дождаться завершения полного закрытия, а только потом продолжить работу?
Upd: Пока победил тем, что сначала закрываю все карты, а только потом таблиц.