es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SQLAlchemy: ¿Cómo puedo obtener el valor asociado de una tabla secundaria?

“`
class UserAccount:
<strong>tablename</strong> = "cuenta<em>de</em>usuario"
usuario<em>id</em> = db.Column(db.Integer, db.ForeignKey("usuarios.id"), nullable=False)
cuenta_id = db.Column(db.Integer, db.ForeignKey("cuentas.id"), nullable=False)
rol = db.Column(db.String(64), nullable=False)

class Usuario:
id = db.Column(db.Integer, primary_key=True)
cuentas = db.relationship('Cuenta', secondary="cuenta<em>de</em>usuario")

class Cuenta:
id = db.Column(db.Integer, primary_key=True)

<code>
Entonces aquí necesito obtener las cuentas con los roles apropiados:
</code>
usuario = Usuario.query.first()
print(usuario.cuentas)
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener cuentas con roles apropiados, puede modificar la línea print(user.accounts) por:

    user_accounts = db.session.query(UserAccount).filter_by(user_id=user.id).all()
    for ua in user_accounts:
        account = Account.query.filter_by(id=ua.account_id).first()
        print(f"Cuenta: {account.id}, Rol: {ua.role}")
    

    Este código primero realiza una consulta a la tabla UserAccount para obtener todas las filas donde el user_id coincide con el id del primer usuario devuelto por User.query.first(). Luego recorre cada cuenta de usuario y consulta la tabla Account para obtener la cuenta correspondiente utilizando la columna account_id. Finalmente, imprime el id y el rol de cada cuenta.

Comments are closed.