SQLAlchemy使用检查器确定Integer属性是否为外键

时间:2016-03-15 04:31:52

标签: python sqlalchemy

我定义了像这样的sqlalchemy模型:

class Dog(Model):
    __tablename__ = 'dog'

    id = db.Column(db.Integer, primary_key=True)
    owner = db.Column(db.Integer, db.ForeignKey('owner.id'))

我想使用检查器来确定每个属性的类型,但是我无法弄清楚如何访问我想要的东西,其中包括(a)每个属性的类型和(b)我已经传递到Column的所有其他属性。

我尝试了以下内容:

for column in inspect(target_class).columns:
    print column.type

返回:

INTEGER
INTEGER

但我真的喜欢

INTEGER
FOREIGN_KEY

或至少某种方式来识别我使用第二个整数来识别另一个表。

最正确的方法是什么?如果可能的话,我也有兴趣抓住我传入db.Column的所有kwargs。

1 个答案:

答案 0 :(得分:2)

您可以查看foreign_keys上的Column媒体资源:

for column in inspect(Dog).columns:
    print column.foreign_keys
# set([])
# set([ForeignKey('owner.id')]

kwargs还设置了其他属性,例如primary_key

for column in inspect(Dog).columns:
    print column.primary_key
# True
# False