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__, все пройдет нормально.
Есть ли что-то, что мне здесь не хватает? Нужно ли мне также перезагрузить эту таблицу в моем файле запросов констант?
РЕДАКТИРОВАТЬ:
Версия SQLAlchemy — 2.0.43
Вот таблица местного времени:
class LocalTimeTableBase(Base):
__abstract__ = True

PLATFORMID_COLUMN_NAME = "platformid"
NETWORKTYPE_COLUMN_NAME = "networktype"
TIME_CONV_COLUMN_NAME = "time_conv"
DISTRIBUTIONCODE_COLUMN_NAME = "distributioncode"
SECURITYID_COLUMN_NAME = "securityid"

platformid = Column(String, name=PLATFORMID_COLUMN_NAME, primary_key=True)
networktype = Column(
String, name=NETWORKTYPE_COLUMN_NAME, nullable=False, primary_key=True
)
time_conv = Column(Numeric, name=TIME_CONV_COLUMN_NAME)
distributioncode = Column(String, name=DISTRIBUTIONCODE_COLUMN_NAME)
securityid = Column(Integer, name=SECURITYID_COLUMN_NAME)

class LocalTimeTable(LocalTimeTableBase):
__tablename__ = "local_time"
__table_args__ = {"schema": SCHEMA_NAME}


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

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

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

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

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

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