Декларативная ошибка SQLAlchemy "один ко многим не определена"

Я пытаюсь понять, как определить отношение «один ко многим» с помощью декларативного 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()

6
задан Adam Matan 10 December 2015 в 09:17
поделиться