This will result in a slow query

`q.union(a).union(b).union(c)` is better as `q.union(a, b, c)` sqlalchemy will make a nicer query not lots of sub ones.
so re-factoring this would be good.  

Yes, existing code uses `q.union(a).union(b).union(c)`  but this is being fixed in other branches.