如果我有一个带有PK的模型,请在另一个表中说id
(所以它不是x = db.Column(db.Integer, db.ForeignKey('device.device_id'))
):
Device.pk
如何在sqlalchemy查询中引用此列?
在Django中,我可以使用{{1}},它会解析PK。是否可以使用sqlalchemy烧瓶?
答案 0 :(得分: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
的所有test@example.com
个对象,我可以说:
Person.query.join(Address).filter(Address.email='test@example.com').all()