Вот простое сопоставление моей базы данных. Для школьной таблицы я переименовал имя базы данных «SchoolDistrict» в более короткое «район». Я удалил несколько слоев из администратора базы данных, поэтому изменить их в исходном коде невозможно.
Код: Выделить всё
class School(Base):
__tablename__ = 'DimSchool'
id = Column('SchoolKey', Integer, primary_key=True)
name = Column('SchoolName', String)
district = Column('SchoolDistrict', String)
class StudentScore(Base):
__tablename__ = 'FactStudentScore'
SchoolKey = Column('SchoolKey', Integer, ForeignKey('DimSchool.SchoolKey'), primary_key = True)
PointsPossible = Column('PointsPossible', Integer)
PointsReceived = Column('PointsReceived', Integer)
school = relationship("School", backref='studentscore')
Код: Выделить всё
query = session.query(StudentScore, School).join(School)
df = pd.read_sql(query.statement, query.session.bind)
РЕДАКТИРОВАТЬ:
Еще более неприятный случай — когда в таблицах существуют повторяющиеся имена столбцов. Например:
Код: Выделить всё
class Teacher(Base):
__tablename__ = 'DimTeacher'
id = Column('TeacherKey', Integer, primary_key=True)
fname = Column('FirstName', String)
lname = Column('FirstName', String)
class Student(Base):
__tablename__ = 'DimStudent'
id = Column('StudentKey', Integer, primary_key=True)
fname = Column('FirstName', String)
lname = Column('FirstName', String)
Код: Выделить всё
query = session.query(StudentScore, Student, Teacher).join(Student).join(Teacher)
Подробнее здесь: https://stackoverflow.com/questions/311 ... -dataframe
Мобильная версия