В предыдущей главе мы обсудили, как использовать несколько таблиц. Таким образом, мы продолжим шаг дальше и изучим множество обновлений таблиц в этой главе
Используя объект таблицы SQLAlchemy, в предложении WHERE метода update () можно указать более одной таблицы. PostgreSQL и Microsoft SQL Server поддерживают операторы UPDATE, которые ссылаются на несколько таблиц. Это реализует синтаксис «ОБНОВЛЕНИЕ ОТ» , который обновляет одну таблицу за раз. Однако на дополнительные таблицы можно ссылаться в дополнительном предложении «FROM» в предложении WHERE напрямую. Следующие строки кода четко объясняют концепцию обновлений нескольких таблиц .
stmt = students.update().\ values({ students.c.name:'xyz', addresses.c.email_add:'[email protected]' }).\ where(students.c.id == addresses.c.id)
Объект обновления эквивалентен следующему запросу UPDATE —
UPDATE students SET email_add = :addresses_email_add, name = :name FROM addresses WHERE students.id = addresses.id
Что касается диалекта MySQL, несколько таблиц могут быть встроены в один оператор UPDATE, разделенный запятой, как указано ниже —
stmt = students.update().\ values(name = 'xyz').\ where(students.c.id == addresses.c.id)
Следующий код отображает результирующий запрос UPDATE —
'UPDATE students SET name = :name
FROM addresses
WHERE students.id = addresses.id'
Однако диалект SQLite не поддерживает критерии для нескольких таблиц в UPDATE и показывает следующую ошибку: