我在heroku上使用peewee,但根据peewee docs,删除相关表必须在代码中完成。
问题是如何?
我有以下型号
class WebPage(Model):
title = CharField()
class Term(Model):
name = CharField()
class WebPageTerms(Model):
term = ForeignKeyField(Term)
webpage = ForeignKeyField(WebPage)
删除包含 postgresql 自定义语句的表方法:
def drop_tables():
WebPage.drop_table(fail_silently=True)
Term.drop_table(fail_silently=True)
WebPageTerms.drop_table(fail_silently=True)
作为部署的一部分,我删除所有表并创建它们以添加新字段。
我尝试了以下方法,但仍然无法正常工作:
conn = psycopg2.connect("dbname='' user='' host='' password=''")
curr = conn.cursor()
curr.execute("DROP table webpageterms CASCADE")
curr.execute("DROP table webpage CASCADE")
curr.close()
conn.close()
但我不断收到同样的错误
psycopg2.InternalError:无法删除表格网页,因为其他对象依赖于它详细信息:表格网页条款上的约束网页条款_webpage_id_fkey 取决于表格网页提示:也使用 DROP ... CASCADE 删除依赖对象。
我怎样才能删除这些表?
** 编辑 ** 尝试将代码更改为:
curr.execute("ALTER TABLE webpageterms DROP CONSTRAINT webpageterms_webpage_id_fkey")
但我得到:
psycopg2.InternalError: cannot drop table webpage because other objects depend on it
DETAIL: constraint webpageterms_webpage_id_fkey on table webpageterms depends on table webpage
HINT: Use DROP ... CASCADE to drop the dependent objects too.