私はherokuでpeeweeを使用していますが、peeweeのドキュメントによると、関連するテーブルの削除はコードで行う必要があります。
質問はどうですか?
私は次のモデルを持っています
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: 他のオブジェクトがそれに依存しているため、テーブル Web ページを削除できません 詳細: テーブル webpageterms の制約 webpageterms_webpage_id_fkey は、テーブル Web ページに依存します ヒント: 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.