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

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

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 Store Model. имя_таблицы в некотором глобальном словаре или синглтоне.

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

18
задан Sheena 28 July 2012 в 19:38
поделиться