我想创建一个函数,在给定表名的情况下,返回具有table name的模型。 例如:
class Model(Base):
__tablename__ = 'table'
...a bunch of Columns
def getModelFromTableName(tablename):
...something magical
所以getModelFromTableName('table')应该返回模型类。
我的目标是在我制作的一个简单表单生成器中使用该函数,因为FormAlchemy不适用于python3.2,我希望它能够很好地处理外键。
有谁能给我一些关于如何让getModelFromTableName工作的建议吗?
我有一个想法(这可能是完全错误的,我以前从未使用过元类…)
如果我让我的模型类继承自基类以及其他类(TableReg),并且在一些全局字典或单例中有TableReg store Model.tablename的类meta,该怎么办。
我意识到这可能是完全不可能的,因为Base的元类做了一些我不想破坏的非常重要和非常漂亮的事情,但我认为必须有一种方法让我在模型的元类中附加一点构造函数代码。或者我不明白。
注意OrangeTux答案不考虑模式。如果在不同模式中有表同音词,请使用:
fullname
是一个表属性,请参见:github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/sql/schema.py#L530-L532
此函数的实用函数已添加到SQLAlchemy-Utils。有关详细信息,请参见get_class_by_table docs。SQLAlchemy Utils中的解决方案也能够覆盖单表继承场景。
灵感来自Eevee的评论:
相关问题 更多 >
编程相关推荐