2015-10-05 37 views
0

如果我有一个PK的典范,可以说device_id(所以它不是id),我涉及的另一个表:从数据库取回模式任意PK

x = db.Column(db.Integer, db.ForeignKey('device.device_id'))

我如何在SQLAlchemy中引用此列查询?

在Django我可以使用Device.pk它会解决PK。在sqlalchemy的烧瓶中这可能吗?

+0

这里是[答案](http://stackoverflow.com/a/32200462/1377864)。 –

+0

你是什么意思“你怎么能参考它?”在那里,它被称为'x'。请[编辑]添加一个[mcve],展示你正在努力完成的任务。 – davidism

回答

0

您可以加入它,也可以使用SQLAlchemy的关系自动运行它。

它看起来像你在谈论一个多对一的关系,所以,using the documentation example

class Person(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50)) 
    addresses = db.relationship('Address', backref='person', 
           lazy='dynamic') 

class Address(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(50)) 
    person_id = db.Column(db.Integer, db.ForeignKey('person.id')) 

如果是PK的人不同的名称,你只需调节ForeignKey匹配:

class Person(db.Model): 
    toot = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50)) 
    addresses = db.relationship('Address', backref='person', 
           lazy='dynamic') 

class Address(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(50)) 
    person_id = db.Column(db.Integer, db.ForeignKey('person.toot')) 

如果我当时就想找出所有Person对象谁拥有[email protected]的电子邮件地址,我可以只说:

Person.query.join(Address).filter(Address.email='[email protected]').all()