Я работаю над рефакторингом и перенес столбец из одной таблицы в другую.
Существует таблица, представляющая полку static.connected_shelf
(с iot-устройствами на ней),
и есть таблица, которая представляет устройства static.iot_devices
.
Теперь появились новые устройства, которые не установлены на полках, и поэтому атрибут iot_device_type_fk
должен быть перемещен с static.connected_shelf
на static.iot_devices
.
Чтобы предотвратить состояние гонки, когда я пытаюсь получить этот атрибут, мне нужно изменить свои запросы, поэтому, когда он ищет тип устройства в static.iot_devices
, но столбца там не существует (рефакторинг еще не произошел в в этой среде), тест не будет неудачным, но вернитесь к static.connected_shelf
и получите значение оттуда.
Вот пример очень простого запроса:
query = """SELECT c.pk connected_shelf_fk, i.iot_device_type_fk device_type_fk, i.pk device_fk
FROM static.connected_shelf c
JOIN static.iot_devices i ON c.pk = i.connected_shelf_fk
WHERE i.pk = %(device_id)s"""
cursor.execute(query, {'device_id': device_id})
Итак, я уже изменил запрос, чтобы он выглядел как iot_device_type_fk
в static.iot_devices
. Как я могу убедиться, что если этот столбец не существует в этой таблице, я получу его от static.connected_shelf
?