如何使用SQLAlchemy + PostgreSQL删除自定义类型?

时间:2014-06-17 08:19:14

标签: python postgresql sqlalchemy

我有一个清理数据库的脚本,这在我们的测试中被广泛使用。

首先,我们尝试使用SQLAlchemy Metadata.drop_all()的东西,但它没有在删除时解析一些外键,这会导致错误。然后,我从@zzzeek找到this script,它几​​乎一样,但是以“智能”方式。它处理外键的所有问题,但现在有几个关于更改自定义类型(ENUM)的问题。问题是,如何使用SQLAlchemy将它们全部删除?手动执行DROP TYPE?

数据库中的表是使用Alembic创建的,即使上面的脚本成功删除了所有表,一些自定义的ENUM仍然存在,并且在尝试重新创建它们时一切都失败。

重新创建整个数据库不是首选解决方案,因为应用程序的默认数据库用户通常无权创建数据库。

1 个答案:

答案 0 :(得分:1)

您确定您的元数据实例完全描述了所有表吗?

尝试:

Metadata.reflect()
Metadata.drop_all()