Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализирайте присъединената таблица чрез SQLAlchemy ORM с помощта на session.query

От версия 0.7.4 sqlalchemy.sql.expression.update ви позволява да се обърнете към множество таблици в клаузата WHERE. С това можете да създадете и изпълните израз като:

users.update().values(name='ed').where(
        users.c.name==select([addresses.c.email_address]).\
                    where(addresses.c.user_id==users.c.id).\
                    as_scalar()
        )

(пример направо от връзката по-горе)

Проблемът, който има ValAyal всъщност е, защото Query.join() не се поддържа с Query.update() . За съжаление, до 0.9.1 това безшумно генерираше заявки като тази, която ValAyal сподели по-горе. бележки за промени за 1 9. отбелязва, че поведението е променено, за да излъчва предупреждение:

Всъщност се натъкнахме на това, където работя точно тази вечер и открихме, че нашият код всъщност излъчва следното предупреждение (което казва, че ще бъде грешка в 1.0):

SAWarning: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called.  This will be an exception in 1.0
  self._validate_query_state()

В нашия случай избрахме да преобразуваме актуализацията в избрана и актуализация в една таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените времето?

  2. Конструирайте заявка за създаване на таблици

  3. Какви рамки да използвам, за да стартирам първия си производствен scala проект?

  4. Тип данни за оценка на MySQL 5 звезди?

  5. Как да получа NULL в MySQL целочислена колона с PHP/MySQLi?