SqlAlchemy не использует обновленное имя таблицы в инструкции соединенияPython

Программы на Python
Ответить
Anonymous
 SqlAlchemy не использует обновленное имя таблицы в инструкции соединения

Сообщение Anonymous »

Я не совсем понимаю, что происходит, но для нашего тестирования мы переименовываем таблицы перед тем, как все сгенерировать (т.е. схема.имя_таблицы переименовывается в имя_таблицы_схема из-за проблем с тем, как нам приходится тестировать). У меня есть файл сгенерированных запросов, которые можно использовать как константы, и какое-то время все работало нормально и так, как ожидалось. Я не знаю, что произошло и почему, но по состоянию на понедельник мои тесты выдают ошибку, сообщая, что таблица не существует. Он помечает таблицу как старое имя, а не новое имя, но другая таблица в этом операторе выбора использует новое имя, поэтому я не понимаю, почему одно правильное, а другое нет.
Когда я запускаю тесты, я импортирую запросы, чтобы новые имена таблиц были там после того, как наша тестовая база данных обновит все:

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

def setUp(self):
self.now = TestConstants.TEST_TIME_WINDOW_CENTER
self.database = TestDatabase()
importlib.reload(queries)
Затем мой тест запускает этот оператор:

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

get_qc_sod_data = (
select(QcSodTable)
.join(
LocalTimeTable,
and_(
QcSodTable.platformid == LocalTimeTable.platformid,
QcSodTable.networktype == LocalTimeTable.networktype
),
isouter=True,
)
.where(
or_(QcSodTable.qc_flag.not_in(("P", "F")), QcSodTable.qc_flag == None),
(QcSodTable.datetime + cast(literal(1.5) + ' DAYS', Interval)) - (cast(func.coalesce(LocalTimeTable.time_conv, 0) / 24 + ' HOURS', Interval)) < func.now(),
)
)
Ошибка возникает в LocalTimeTable, где указано, что таблица не существует, но указано неверное имя (

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

schema.table_name
), хотя в таблице Select указано правильное имя, как и ожидалось, поэтому я не уверен, почему другое неверно. Если я изменю LocalTimeTable на LocalTimeTable.__ table__, все пройдет нормально.
Есть ли что-то, что мне здесь не хватает? Нужно ли мне также перезагрузить эту таблицу в файле запросов констант?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -statement
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»