session.query легаси
session.execute( delete(...).where(...) )
А session.delete(obj) ?
с чего это query - легаси? как тогда выборку делать?
Это если у тебя есть объект
session.execute( select(...).where(...) )
хмм.. спасибо за ответы
С того что query это устаревшее ORM API, вместо которого с 1.4 теперь идет унифицированное API для Core и ORM
спасибо, понял
Ivan, Вы увеличили карму Alex до 773.55 (+7.98)
https://docs.sqlalchemy.org/en/20/orm/session_api.html#sqlalchemy.orm.Session.query Note that the Query object is legacy as of SQLAlchemy 2.0; the select() construct is now used to construct ORM queries.
а с таким подходом можно будет комбинировать методы для получения объектов? например: repository.related_to_company(int).related_to_customer(int)
хз, конечно, но вот так почему-то не отрабатывает, хотя в select показывает, что объекты эти есть в БД: select_stmt = (select(CustomerAccountLocation) .where(CustomerAccountLocation.customer_id == prev_customer_id, CustomerAccountLocation.location_id == instance.id)) selected = self.unit_of_work.session.execute(select_stmt).all() delete_stmt = (delete(CustomerAccountLocation) .where(CustomerAccountLocation.customer_id == prev_customer_id, CustomerAccountLocation.location_id == instance.id)) self.unit_of_work.session.execute(delete_stmt)
Странно, но только добавив commit() все заработало и строки удалились. Я думал, что execute() отправляет запрос в БД
почитай про транзакции
Обсуждают сегодня