SQLAlchemy: безопасно ли добавлять в представление новый столбец, не упомянутый в модели?Python

Программы на Python
Ответить
Anonymous
 SQLAlchemy: безопасно ли добавлять в представление новый столбец, не упомянутый в модели?

Сообщение Anonymous »

Предположим, у меня есть представление, например

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

create view MyView as select 1 as A, 2 as B
(Вышеупомянутый SQL является диалектом Microsoft, но детали самого представления не важны.)
Я заключаю это представление в определение модели SQLAlchemy. :

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

class MyView(Base):
__tablename__ = 'MyView'
A = Column(Integer)
B = Column(Integer)
Это представление используется не только внутри SQLAlchemy. Его могут использовать другие приложения или написанные вручную SQL-запросы. Предположим, я хочу добавить в представление новый столбец, и теперь он читается как

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

create view MyView as select 1 as A, 2 as B, 3 as C
(Эта новая версия представления обратно совместима для большинства запросов приложений. Только запросы, использующие select *, увидят другой результат. Запросы, которые соединяют представление с некоторыми другое представление или таблица, также предоставляющая столбец с именем C, но не полностью определяющая имена столбцов, может получить ошибку о неоднозначных именах столбцов.)
Предположим, на данный момент я это сделаю не планирую использовать столбец C из SQLAlchemy и не добавляю его в определение модели. Возможно, со временем я это сделаю, но по какой-то причине я пока не могу изменить код или, по крайней мере, не выпустить новую версию. Тем не менее безопасно ли добавлять столбец в представление и оставаться совместимым с существующим файлом модели SQLAlchemy?
Поскольку я спрашиваю о представлении, а не о таблице, предположим, что SQLAlchemy предоставляет доступ только для чтения. Приложение не пытается обновить представление или удалить его из представления, даже если это возможно в некоторых СУБД.
Не возникнет никаких проблем, если, скажем, SQLAlchemy попытается проанализировать столбцы в представлении и пожаловаться на дополнительные, не упомянутые в модели? Я думаю, что нет... но однозначного ответа я не нашел.

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

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

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

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

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

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