Sqlalchemy удалить подзапрос

Я пытаюсь удалить некоторые дочерние строки, используя отфильтрованный запрос без результата:

sl = DBSession.query(Puesto.id).filter(Puesto.locales_id == id).subquery() DBSession.query(Servicio).filter(Servicio.puestos_id.in_(sl)).delete() 

Я получаю InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter. InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter. как ошибка.

Полная трассировка стека:

 Traceback (most recent call last): File "/usr/src/tg2env/ceaf/ceaf/controllers/root.py", line 1673, in delete_local DBSession.query(Servicio).filter(Servicio.puestos_id.in_(sl)).delete() File "/usr/src/tg2env/lib/python2.4/site-packages/SQLAlchemy-0.6.6-py2.4.egg/sqlalchemy/orm/query.py", line 2126, in delete raise sa_exc.InvalidRequestError( InvalidRequestError: Could not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter. 

Я не могу найти, где проблема …

Есть идеи?

С уважением

One Solution collect form web for “Sqlalchemy удалить подзапрос”

После поиска в источнике, где происходит ваше исключение, я предлагаю попробовать следующее:

 sl = DBSession.query(Puesto.id).filter(Puesto.locales_id == id).subquery() DBSession.query(Servicio).filter(Servicio.puestos_id.in_(sl)) \ .delete(synchronize_session='fetch') 

См. Документацию по методу удаления для этого. Передача аргумента fetch будет в основном выполнять запрос дважды, один раз в качестве выбора и один раз в качестве удаления.

Если запуск двух запросов нежелателен, перейдите в MetaData synchronize_session=False а затем вызовите session.expire_all() сразу после удаления, чтобы избежать несогласованного состояния в хранилище MetaData .

  • Как определить таблицу без первичного ключа с помощью SQLAlchemy?
  • Ошибка flask-sqlalchemy NameError: глобальное имя 'joinload' не определено
  • SQLAlchemy повышает значение None, вызывает TypeError
  • SQLAlchemy протоколирование изменений с датой и пользователем
  • Родительский экземпляр не связан с сеансом; ленивая загрузка атрибута «account» не может продолжаться
  • SQLAlchemy func.count с фильтром
  • SQLAlchemy ORM: изменение столбцов, возвращаемых из запроса
  • Преобразование ORM SQLAlchemy в pandas DataFrame
  • Python - лучший язык программирования в мире.