2016-10-02 2 views
2

Im Versuch, den Haustierbesitzer oder Personen nennenKolben sqlalchemy One Viele bekommen Eltern Attribute

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')) 

Ich möchte fragen, die Tiere zu erhalten und nachdem ich ein Haustier auswählen möchte ich Tierbesitzer Namen bekommen

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

die Eigentümer-ID geben, aber ich möchte Besitzer Name

+0

Sie sollten das SQLAlchemy ORM-Lernprogramm lesen. Arbeiten mit Beziehungen auf diese Weise sind dort abgedeckt. – inklesspen

Antwort

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

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

diese Art Verwendung von Abfragen wir SQLAlchem ​​zwingen y, um die Zuordnung von pet Tabelle zu Pet Objekt zu verwenden und Person 's Namen als zweites Element in auswählen. Natürlich kann man so etwas verwenden:

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

dann werden Sie in der Lage sein, es auf diese Weise zu nutzen:

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

so Verweis auf eine Person als Objekt der Person Klasse. Aber die erste Option ist besser, weil sie schneller ist, nur um den Namen der Person zu erhalten.

+0

Vielen Dank. Es funktionierte. Kannst du mir einen Gefallen tun und mich mit Docs verlinken, damit ich lernen kann. –

+0

Sicher, hier ist über Abfragen: http://docs.sqlalchemy.org/en/latest/orm/query.html, aber vielleicht werde ich mehr in meiner Antwort erklären. – turkus

Verwandte Themen