(Flask)-SQLAlchemy从列中获取相应的模型

时间:2016-12-14 08:37:53

标签: python flask sqlalchemy flask-sqlalchemy

Flask-SQLALchemy我有一个带列的模型:

class MyModel(db.Model):

    def my_method1(self, arg1):
        pass

    a = Column(String(), primary_key=True)

现在我有一个函数接受Columns作为参数从中检索一些信息:

def get_column_info(column):
    if column.primary_key:
        return True
    else: 
        return False

请注意,这只是一个例子,get_column_info比现实中的更多。

现在我希望能够访问get_column_info函数中的原始模型。那是我希望能够调用my_method1() 来自get_column_info。

有没有办法可以从列实例中检索原始模型?

1 个答案:

答案 0 :(得分:2)

没有适当的开箱即用方法。列对象具有table属性,该属性返回模型的__table__属性,但您无法从中获取实际模型。但是(正如answer建议的那样),您可以在sqlalchemy_utils插件中使用get_class_by_table方法:

from sqlalchemy_utils.functions import get_class_by_table

def get_model(column):
    return get_class_by_table(db.Model, column.__table__)