SQLAlchemy ORM comprueba si la columna es un foreign_key

Hola, me preguntaba si alguien sabe cuál es la forma más eficiente de averiguar si una columna tiene una relación de ForeignKey o no.

class StudentIntendCourse(DeclarativeBase): __tablename__ = 'studentIntendCourse' id = Column(Integer, primary_key=True) studentID = Column('studentID',Integer,ForeignKey('student.id')) courseID = Column('courseID',Integer,ForeignKey('course.id')) course = relationship("Course",backref="studentIntendedCourses") 

Me gustaría saber si is_foreign_key (StudentIntendCourse.studentID)?

Los objetos ForeignKey asociados con un objeto Column individual están disponibles en la colección foreign_keys de esa columna.

 foreign_keys_set = StudentIntendCourse.__table__.c.studentID.foreign_keys 

Puede comprobar si este conjunto no está vacío.

Tuve un problema similar. En realidad no tenía el objeto de la tabla, sino el nombre de la tabla y, de manera similar, el nombre de la columna. Aquí está mi solución:

 from sqlalchemy.schema import MetaData from sqlalchemy import create_engine engine = create_engine( URL ) meta = MetaData() meta.reflect(bind=engine) def is_foreign_key(table_name, col_name): return col_name in [e.target_fullname for e in meta.tables[table_name].foreign_keys] 

NOTA:

 meta.tables[table_name].foreign_keys == Table.__table__.foreign_keys