我有一个清理数据库的脚本,它在我们的测试中被广泛使用。
首先,我们尝试使用 SQLAlchemy Metadata.drop_all() 东西,但它并没有在删除时解析一些外键,这导致了错误。然后,我找到了this script来自@zzzeek,它的功能几乎相同,但以一种“智能”的方式。它处理所有外键问题,但现在有几个关于更改的自定义类型 (ENUM) 的问题。问题是,如何使用 SQLAlchemy 将它们全部删除?仅手动执行 DROP TYPE?
数据库中的表是使用 Alembic 创建的,即使上面的脚本成功删除了所有表,一些自定义 ENUM 仍然存在,并且在尝试重新创建它们时一切都失败了。
重新创建整个数据库不是首选解决方案,因为应用程序的默认数据库用户通常不应该有权创建数据库。
最佳答案
您确定您的元数据实例完整描述了所有表吗?
尝试:
Metadata.reflect()
Metadata.drop_all()
关于python - 如何使用 SQLAlchemy + PostgreSQL 删除自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258921/