Usando SQLAlchemy 0.7.1 y una base de datos MySQL 5.1 relacionado, Tengo una relación muchos-a-muchos relación establecido de la siguiente manera:SQLAlchemy: filtro por la pertenencia a al menos uno-muchos-a-muchos mesa
user_groups = Table('user_groups', Base.metadata,
Column('user_id', String(128), ForeignKey('users.username')),
Column('group_id', Integer, ForeignKey('groups.id'))
)
class ZKUser(Base, ZKTableAudit):
__tablename__ = 'users'
username = Column(String(128), primary_key=True)
first_name = Column(String(512))
last_name = Column(String(512))
groups = relationship(ZKGroup, secondary=user_groups, backref='users')
class ZKGroup(Base, ZKTableAudit):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
name = Column(String(512))
Los usuarios pueden pertenecer a múltiples grupos, y los grupos pueden contener varios usuarios.
Lo que intento hacer es crear una consulta SQLAlchemy que devuelva solo a los Usuarios que pertenecen a al menos un Grupo de una lista de Grupos.
Jugué con la función in_
, pero eso solo parece funcionar para probar valores escalares para la membresía en una lista. No soy muy escritor de SQL, así que ni siquiera sé qué tipo de declaración SELECT
requeriría.
¿Cómo se filtra por membresía en todas las tablas relacionadas de muchos a muchos? – WebPal
Su respuesta hace referencia a 'ZKContact' y' contacts', pero estos no están en su código en la pregunta. ¿Querías decir ZKUser? –
Abajo la respuesta de votación, está usando palabras clave diferentes a las preguntas, y es difícil seguir cuál es la posible solución. – Drachenfels