SQLAlchemy: получить модель из имени таблицы. Насколько я вижу, это может означать добавление какой-либо функции в конструктор метакласса.

Я хочу сделать функцию, которая, учитывая имя таблицы, возвращает модель с этимtablename. Eg:

class Model(Base):
    __tablename__ = 'table'
    ...a bunch of Columns

def getModelFromTableName(tablename):
   ...something magical

поэтому getModelFromTableName («таблица») должен возвращать класс Model.

Моя цель - использовать эту функцию в простом генераторе форм, который я создаю, поскольку FormAlchemy не работает с python3.2, и я хочу, чтобы он хорошо обрабатывал внешние ключи.

Кто-нибудь может дать мне какие-нибудь советы о том, как заставить getModelFromTableName работать?

Вот одна из идей, которые у меня есть (это может быть совершенно неправильно, я раньше не работал с мета-классами ...)

Что если бы я должен был сделать так, чтобы мои классы Model наследовали от Base, а также от какого-то другого класса (TableReg) и имели мета-класс класса TableReg для хранения Model.tablename в каком-то глобальном словаре или синглтоне.

Я понимаю, что это может быть совсем не так, потому что метакласс Base делает некоторые очень важные и совершенно изящные вещи, которые я не хочу нарушать, но я предполагаю, что у меня должен быть способ добавить немного кода конструктора к мета класс моих моделей. Или я не понимаю.

Ответы на вопрос(5)

Ваш ответ на вопрос