muj*_*uji 5 python sqlalchemy pytest
我正在为我的 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)?
小智 0
要将级联选项添加到metadata.drop_all(bind=engine),您需要在每个外键关系中指定它。级联onupdate也是如此。
我的项目示例:
room_facility_id = Column(Integer, ForeignKey('hotel_room_facility.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |