Para una relación de uno a muchos o de muchos a muchos, (normalmente) es mejor usar subqueryload
en cambio, por razones de rendimiento:
session.query(Product).join(User.addresses)\
.options(subqueryload(Product.orders),\
subqueryload(Product.tags)).all()
Este problema separa SELECT
consultas para cada uno de los orders
y tags
.