Ich versuche herauszufinden, wie man eine Eins-zu-viele-Beziehung mit SQLAlchemy deklarative ORM zu definieren, und versuchen, the example zu arbeiten, aber ich bekomme einen Fehler, dass meine Unterklasse kann nicht (natürlich, weil es später erklärt hat ...) zu findenSQLAlchemy deklarative Eins-zu-viele nicht definiert Fehler
InvalidRequestError: When initializing mapper Mapper|Parent|parent, expression 'Child' failed to locate a name ("name 'Child' is not defined"). If this is a class name, consider adding this relationship() to the class after both dependent classes have been defined.
Aber wie mache ich das definieren, ohne den Fehler?
Der Code:
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:[email protected]: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()