SQLAlchemy - 选择与外键关联的数据,而不是外键本身

时间:2015-07-15 19:29:18

标签: python sqlalchemy

我有两个表,名称和人物。

名称:

  • id(int,primary key)

  • name(varchar)

人:

  • id(int,primary key)

  • name_id(int,foreign key-> Name.id)

假设我的模型设置了外键,如果我运行Person.query.first().name_id,这将返回一个整数。我希望它返回name varchar。这可能吗?或者我能做些什么来获得相同的结果?

1 个答案:

答案 0 :(得分:2)

class Name(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text) # or varchar 

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name_id = db.Column(db.Integer, db.ForeignKey('name.id'))

    _name = db.relationship('Name')

    @property
    def name(self):
        return self._name.name

获取实际名称可以像这样或在名称功能中使用select。我喜欢这种方式与财产。您需要在关系和其他详细信息中使用联接方式填写详细信息。

您可以@property@hybrid_property从SQLAlchemy获得一些简洁的功能。当然,你需要有效地使用它。