Отразить все таблицы, не принадлежащие пользователю, но предоставившие синонимы - PullRequest
1 голос
/ 09 июля 2019

У нас есть некоторые таблицы, которые не принадлежат нашему пользователю, но пользователь предоставил доступ через синонимы.

Мы можем отразить отдельные таблицы, используя sqlalchemy.Table и oracle_resolve_synonyms,но использование этого параметра диалекта с MetaData.reflect() не возвращает таблицы, даже если в документах сказано, что параметр будет передан отражениям в нижестоящей таблице.

Это потому, что MetaData.reflect() не может перечислитьтаблицы, не принадлежащие пользователю?

Есть ли другой вариант для отражения синонимов без необходимости отображения таблицы за таблицей?

EDIT

СледующееРаботы:

mytable = sqlalchemy.Table('mytable',
                           meta,
                           autoload=True,
                           autoload_with=engine,
                           oracle_resolve_synonyms=True)

, но не следующие:

meta.reflect(bind=engine, oracle_resolve_synonyms=True)

1 Ответ

0 голосов
/ 09 июля 2019

Исходный код MetaData.reflect () объясняет поведение.Метаданные создают экземпляр sqlalchemy.Table () для каждой таблицы, возвращаемой engine.all_tables ().Если параметр 'схема' не включен, это преобразуется в dialet.get_table_names () вызов, который возвращает таблицы, принадлежащие пользователю .Это означает, что MetaData.reflect () не получит выгоду от использования oracle_resolve_synonyms, которое будет передаваться только в sqlalchemy.Table ().

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