解决您的问题的最简单方法是
base取出导入的模块
A,
B然后
C;中断循环导入。
base.py
from sqlalchemy.ext.declarative import declarative_basebase = declarative_base()
py
from sqlalchemy import *from base import basefrom sqlalchemy.orm import relationshipclass A(base): __tablename__ = "A" id = Column(Integer, primary_key=True) Bs = relationship("B", backref="A.id") Cs = relationship("C", backref="A.id")b.py
from sqlalchemy import *from base import baseclass B(base): __tablename__ = "B" id = Column(Integer, primary_key=True) A_id = Column(Integer, ForeignKey("A.id"))py
from sqlalchemy import *from base import baseclass C(base): __tablename__ = "C" id = Column(Integer, primary_key=True) A_id = Column(Integer, ForeignKey("A.id"))main.py
from sqlalchemy import create_enginefrom sqlalchemy.orm import relationship, backref, sessionmakerimport baseimport aimport bimport cengine = create_engine("sqlite:///:memory:")base.base.metadata.create_all(engine, checkfirst=True)Session = sessionmaker(bind=engine)session = Session()a1 = a.A()b1 = b.B()b2 = b.B()c1 = c.C()c2 = c.C()a1.Bs.append(b1)a1.Bs.append(b2) a1.Cs.append(c1)a1.Cs.append(c2) session.add(a1)session.commit()适用于我的机器:
$ python main.py ; echo $?0



