Python SQLAlchemy声明性一对多未定义错误

Python SQLAlchemy声明性一对多未定义错误,python,database,sqlalchemy,Python,Database,Sqlalchemy,我正试图弄清楚如何使用SQLAlchemy的声明性ORM定义一对多关系,并试图开始工作,但我遇到了一个错误,我的子类找不到(很自然,因为它是稍后声明的…) InvalidRequestError:初始化映射器映射器|父|父时,表达式“Child”找不到名称(“未定义名称“Child”)。如果这是类名,那么在定义了依赖类之后,考虑将此关系()添加到类。 但是如果没有错误,我该如何定义它呢 守则: from sqlalchemy import create_engine from sqlalchem

我正试图弄清楚如何使用SQLAlchemy的声明性ORM定义一对多关系,并试图开始工作,但我遇到了一个错误,我的子类找不到(很自然,因为它是稍后声明的…)

InvalidRequestError:初始化映射器映射器|父|父时,表达式“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()
我是这样做的:

from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship

engine = create_engine('sqlite://', echo=True)
Base = declarative_base(bind=engine)
Session = sessionmaker(bind=engine)


class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)

class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id'))
    parent = relationship(Parent, backref='children')

Base.metadata.create_all()