Итак, у меня следующая ситуация.У меня есть класс DataTypes, который имеет следующую структуру:
class DataType(Base):
__tablename__ = 'DATA_TYPES'
id = Column(Integer, primary_key=True)
type_name = Column(String)
fk_result_storage = Column(Integer, ForeignKey('DATA_STORAGES.id'))
parentDataStorage = relationship("DataStorage", backref=backref("DataType", cascade="all,delete"))
def __init__(self, name, resultId):
self.type_name = name
self.fk_result_storage = resultId
Теперь определенная здесь связь работает.Но теперь у меня есть некоторые конкретные типы данных, которые создаются динамически с помощью самоанализа и которые также должны быть удалены каскадно.Они создаются следующим образом:
t = Table('DATA_' + obj.__name__.lower(), *t[:-1], **t[-1])
mapper(obj, t, *args, **kwargs)
model.Base.metadata.create_all(dao.Engine)
Это отлично работает, и таблицы создаются по мере необходимости.Но теперь я хочу добавить отношения, аналогичные отношениям из класса DataType.Итак, я попробовал это:
t = T('DATA_' + obj.__name__.lower(), *t[:-1], **t[-1])
M(obj,t,properties = {'children' : relationship('DataType', backref=backref(obj, cascade="all,delete"))} )
model.Base.metadata.create_all(dao.Engine)
Но это дает мне:
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Original exception was: relationship 'children' expects a class or a mapper argument (received: <type 'str'>)
Я совершенно новичок в SQLAlchemy.Есть предложения?
С уважением, Богдан