2016-07-06 14 views
0

私は現在、次のクエリを持っている "FROM" を指定します。は、明示的にテーブル

SELECT student.id AS student_id, student.school_id AS student_school_id, student.person_id AS student_person_id, school.id AS school_id, school.name AS school_name 
FROM student, school, person JOIN student AS student_1 ON person.id = student_1.person_id JOIN school AS school_1 ON school_1.id = student_1.school_id 
WHERE person.id = :id_1 

私はそれがあるとして、クエリが正確ままにしておきたいが、私は、文からPersonモデルから独占的になりたいです。だから何かのように

SELECT * FROM person JOIN ... WHERE person.id = :id_1 

私はaliased kwargはコンディションが悪いと思う。 aliased kwargを削除すると動作が修正されますが、特別な使用例では別名kwargが必要です。 "FROM"ステートメントからstudentschoolテーブルを削除するにはどうすればいいですか? .join

答えて

2

aliased引数は、Studentを意味し、匿名のエイリアスを使用し、Schoolあなたはsession.queryに渡すテーブルの異なる「インスタンス」です。

from sqlalchemy.orm import aliased 

aliased_student = aliased(Student) 
aliased_school = aliased(School) 

query = (
    session.query(aliased_student, aliased_school) 
    .select_from(Person) 
    .join(aliased_student, Person.student) 
    .join(aliased_school, Student.school) 
    .filter(Person.id == 1)) 

ここであなたが関係に参加するときに使用する.joinたエイリアスを伝えることができることがわかります。