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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener el nombre del modelo o tabla relacionado desde una columna de clave foránea en SQLAlchemy, puedes usar el atributo remote_table de la relación de clave foránea. Este atributo devuelve el objeto Table del modelo relacionado, desde el cual puedes obtener el nombre de la tabla.

    Aquí tienes un ejemplo:

    from sqlalchemy import create_engine, Column, Integer, ForeignKey
    from sqlalchemy.orm import sessionmaker, relationship
    from sqlalchemy.ext.declarative import declarative_base
    
    Base = declarative_base()
    
    # definir modelos
    class Parent(Base):
        __tablename__ = 'parents'
        id = Column(Integer, primary_key=True)
        children = relationship('Child')
    
    class Child(Base):
        __tablename__ = 'children'
        id = Column(Integer, primary_key=True)
        parent_id = Column(Integer, ForeignKey('parents.id'))
        parent = relationship('Parent', backref='children')
    
    # crear motor y sesión
    engine = create_engine('sqlite:///example.db')
    Session = sessionmaker(bind=engine)
    session = Session()
    
    # obtener relación de clave foránea para Child.parent
    fk = Child.__table__.c.parent_id.foreign_keys.pop()
    
    # obtener nombre del modelo/tabla relacionado
    related_table_name = fk.remote_table.name
    print(related_table_name)  # imprime 'parents'
    

    Ten en cuenta que primero necesitas obtener el objeto de relación de clave foránea para la columna específica que te interesa, antes de que puedas acceder al atributo remote_table. Esto se puede hacer usando la propiedad foreign_keys de la columna.

Comments are closed.