У меня есть таблица Machine, которая имеет отношение один ко многим с таблицей Sensor, я всегда использую объект отношения в классе Parent, но теперь мне нужно использовать и в Child, поэтому мой код:
Machine.py
from Models.Sensor import MachineSensor
class Machine(sql.Model):
id = sql.Column(types.Integer, primary_key=True)
name = sql.Column(types.Text, nullable=False)
client_id = sql.Column(types.Integer, sql.ForeignKey('client.id'), nullable=False)
sector_id = sql.Column(types.Integer, sql.ForeignKey('sector.id'))
sensor = sql.relationship(MachineSensor, cascade="all, delete-orphan", back_populates='machine')
и Sensor.py
class MachineSensor(Variable):
sector_id = sql.Column(types.Integer, sql.ForeignKey('sector.id'))
machine_id = sql.Column(types.Integer, sql.ForeignKey('machine.id'))
machine = sql.relationship('Machine', uselist=False, back_populates='sensor')
polymorphic_identity = 'MACHINE_SENSOR'
Я могу без проблем позвонить create_all
в начале, но если я попытаюсь сделать запрос в любом таблица в базе данных я получаю эту ошибку: sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class MachineSensor->variable'. Original exception was: When initializing mapper mapped class MachineSensor->variable, expression 'Machine' failed to locate a name ("name 'Machine' is not defined"). If this is a class name, consider adding this relationship() to the <class 'Models.Sensor.MachineSensor'> class after both dependent classes have been defined.