Approaching an identical problem, I found the in_ operator (marked as answer) not to work: I got a "malformed ARRAY literal" error (note: the the example given filters on a column of type String, not of type ARRAY)
@van originated the approach that worked for me. However, the db object in my case does not have an or_ attribute. To get it to work I simply imported or_ directly from SQLAlchemy:
from sqlalchemy import or_
# ...
q = db.session.query(MyTable)
clauses = [MyTable.tags.any(cat_id) for cat_id in categories]
q = q.filter(or_(*clauses))
for r in q.all():
print(r)
Upvotes belong to @van (I'd have commented on his, but don't have the reputation - sorry van).