Есть ли способ быть более явным в определениях SqlAlchemy ORM, используя ссылки на класс / член вместо строковых констант, не сталкиваясь с циклическими зависимостями?Одним из главных преимуществ ORM является поддержание чистоты и удобства обслуживания, чем копирование строковых констант повсюду.Это полностью подрывает эту выгоду.
Простой пример из документации SqlAlchemy, показывающий использование строковых констант.
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
Я хочу сделать это:
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship(Child)
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey(Parent.id))
Этокак правило, законно, но проблема в том, что я сталкиваюсь с циклическими зависимостями с необходимым импортом Parent из Child и Child из Parent (при условии, что они находятся в отдельных файлах).Лучшее, что я могу сделать, это разделить разницу - использовать строки на одном конце и выполнять явный класс с импортом на другом конце.Просто чувствует себя нехорошо.
Просто интересно, не упустил ли я что-то или у кого-то есть какие-то способы сделать это.