簡體   English   中英

Peewee遷移-外鍵約束?

[英]Peewee Migration - Foreign key constraint?

我已經搜索過,這里沒有問題可以解決。 我在遷移中定義了一些表,如下所示:

from playhouse.migrate import * 

db = MySQLDatabase('mydb', 'root', 'password', 'localhost', 3306)

migrator = MySQLMigrator(db)

id_field = IntegerField(null=False, unique=True, index=True, primary_key=True)

fk_field = IntegerField(null=False)

with db.atomic():
    migrate(
        migrator.add_column('my_table', 'id', id_field)
    )

with db.atomic():
        migrate(
            migrator.add_column('my_table1', 'id', id_field)
            migrator.add_column('my_table1', 'table_id', fk_field) # this needs to be marked as a foreign key constraint somehow?
        )

但是,文檔非常不清楚如何在遷移中指定外鍵約束。 一個ForeignKeyField似乎需要一個我沒有的模型。

有沒有一種方法可以在遷移中指定table_id是與my_table id字段相關的外鍵? 您可以在標准SQL中使用FOREIGN KEY table_id REFERENCES my_table(id)進行此操作。

我不知所措,我將轉儲我的SQL遷移,因為peewee的文檔並沒有真正弄清楚這一點。 我不使用Django-我只是在peewee上添加了我擁有的一些腳本。

我可以采取什么措施來解決此問題,以便遷移完全定義我的模型?

如果您試圖將外鍵添加到模型中,而您沒有“擁有”,則有幾種方法。 您可以創建一個存根模型來充當外鍵目標的占位符,然后使用ForeignKeyField調用add_column() 或者,您可以在IntegerField()顯式指定約束列表:

field = IntegerField(..., constraints=[SQL('foreign key references foo(bar)')])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM