2016-10-02 3 views
2

임은 애완 동물 소유자를 얻으려고 노력 같거나 그 사람은 제가 애완 동물을 조회 할 나는 애완 동물을 선택한 후 나는 애완 동물 소유자 이름을 얻으려면플라스크 SQLAlchemy의 하나는

class Person(db.Model): 
     id = db.Column(db.Integer, primary_key=True) 
     name = db.Column(db.String(20)) 
     pets = db.relationship('Pet', backref='owner', lazy='dynamic') 


class Pet(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(20)) 
    owner_id = db.Column(db.Integer, db.ForeignKey('person.id')) 

이름을

pets = Pet.query.all() 
for pet in pets: 
    print pet.owner_id 

소유자 ID를 줄 것이다하지만 난 우리가 SQLAlchem를 강제로 쿼리의 유형을 사용하여 소유자 이름

+0

SQLAlchemy ORM 자습서를 읽어야합니다. 이런 식으로 관계를 다루는 것은 거기에서 다룹니다. – inklesspen

답변

1
pets = db.session.query(Pet, Person.name).join(Person) 

for pet, person_name in pets: 
    print pet.name, person_name 

원하는 y를 pet 테이블의 매핑을 Pet 개체에 사용하고 Person의 이름을 선택의 두 번째 항목으로 가져옵니다. 물론 당신은 같은 것을 사용할 수 있습니다

pets = db.session.query(Pet, Person).join(Person) 

는이 방법을 사용할 수 있습니다 :

for pet, person in pets: 
    print pet.name, person.name 

그래서 Person 클래스의 객체와 사람에 대한 참조를 가지고있다. 그러나 첫 번째 옵션은 더 빠르기 때문에 더 바람직합니다. 단지 사람의 이름을 얻는 것 때문입니다.

+0

고맙습니다. 그것은 효과가 있었다. 당신이 나를 부탁 할 수 있고, 내가 배울 수 있도록 문서들과 연결 시켜줄 수 있겠습니까? –

+0

물론 여기에 대한 질문입니다 : http://docs.sqlalchemy.org/en/latest/orm/query.html,하지만 어쩌면 내가 내 대답에 대해 더 설명합니다. – turkus