[英]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.