我正在为我的 pytest 测试构建设置和拆卸。我无法删除表,因为表之间存在大量依赖关系。不过,每次测试后我都需要删除所有表。
@pytest.fixture()
def test_db():
model.Base.metadata.create_all(bind=test_engine)
db = TestSessionLocal()
yield db
model.Base.metadata.drop_all(bind=test_engine)
Run Code Online (Sandbox Code Playgroud)
它让我震惊psycopg2.errors.DependentObjectsStillExist
我还在我的模型中包含了级联,但它不起作用。
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String, unique=True, index=True)
name = Column(String)
surname = Column(String)
position = Column(String)
skills = relationship("UserSkills", cascade="all, delete", passive_deletes=True)
manager = Column(Integer, ForeignKey("manager.id", ondelete='CASCADE'))
account_type = Column(Enum(AccountType), default=AccountType.USER)
created = Column(DateTime, default=datetime.datetime.utcnow)
Run Code Online (Sandbox Code Playgroud)
如何添加级联选项model.Base.metadata.drop_all(bind=test_engine)?