如何解决SQLAlchemy:从表名称获取模型据我所知,这可能暗示将某些函数附加到元类构造函数中
受伊芙评论的启发:
def get_class_by_tablename(tablename):
"""Return class reference mapped to table.
:param tablename: String with name of table.
:return: Class reference or None.
"""
for c in Base._decl_class_registry.values():
if hasattr(c, '__tablename__') and c.__tablename__ == tablename:
return c
解决方法
我想要一个函数,给定一个表的名称,返回具有该 表 名的模型。例如:
class Model(Base):
__tablename__ = 'table'
...a bunch of Columns
def getModelFromTableName(tablename):
...something magical
因此getModelFromTableName(’table’)应该返回Model类。
我的目标是在我制作的简单表单生成器中使用该函数,因为FormAlchemy不适用于python3.2,并且我希望它能够很好地处理外键。
谁能给我有关如何使getModelFromTableName工作的任何指示?
这是我的一个想法(可能是完全错误的,之前我没有使用过元类…)
如果我要让我的Model类继承自Base以及其他一些类(TableReg),并让TableReg的类元存储Model,该怎么办? 表名
在某些全局字典或辛格尔顿。
我意识到这可能完全不可行,因为Base的元类做了一些我不想破坏的非常重要且非常漂亮的东西,但是我认为必须有一种方法可以向元类添加一些构造函数代码我的模型。否则我不明白。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。