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

标签 python postgresql sqlalchemy

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

首先,我们尝试使用 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/

相关文章:

postgresql - 从 Postgres 数据库中删除所有函数

postgresql - 使用 Postgres : LastInsertedId for non sequential identifiers

javascript - 在 Python 和 Javascript 之间传递变量

python - 在 kivy 中添加小部件

python - 将 Dataframe 转换为数据透视表,将值分组到列表中

Python3 中的 Python 命名空间包

java - jOOQ 中的 DISTINCT ON()

python - 使用 python PIL 更改 8 位 .png 图像的调色板

python - sqlalchemy 将结果作为查询对象而不是 MyModel 类型返回

python - Flask/SQLAlchemy - 无法正确查询关系