Я пытаюсь понять, как определить отношение один-ко-многим, используя декларативный ORM SQLAlchemy, и пытаюсь заставить пример работать, но я получаю ошибку, что мой подчиненный класс не может быть найден (естественно, потому что он объявлен позже ...)
InvalidRequestError: При инициализации mapper Mapper | Parent | parent в выражении «Child» не удалось найти имя («имя« Child »не определено»). Если это имя класса, рассмотрите возможность добавления этого отношения () в класс после определения обоих зависимых классов.
Но как мне это определить, без ошибки?
код:
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
from dev.historyMeta import VersionedMeta, VersionedListener
global engine, Base, Session
engine = create_engine('mysql+mysqldb://user:pass@localhost:3306/testdb', pool_recycle=3600)
Base = declarative_base(bind=engine, metaclass=VersionedMeta)
Session = sessionmaker(extension=VersionedListener())
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship("Child", backref="parent")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
Base.metadata.create_all()