Peewee迁移外键约束?

2024-06-01 01:10:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经查过了,这里没有问题。我在迁移中定义了一些表,比如-

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_tableid字段相关的外键?您可以使用标准SQL中的FOREIGN KEY table_id REFERENCES my_table(id)来实现这一点。在

我不知所措,我准备放弃我的SQL迁移,因为peewee的文档并没有真正说明这一点。我没有使用Django-我只是把peewee和我的一些脚本捆绑在一起。在

我能做些什么来弥补这个问题,让迁移完全定义我的模型?在


Tags: keyaddidfalsetruefielddb定义
1条回答
网友
1楼 · 发布于 2024-06-01 01:10:19

如果您试图将外键添加到您没有的模型中,有几种方法。您可以创建一个存根模型作为外键目标的占位符,然后用ForeignKeyField调用add_column()。或者您可以在IntegerField()中显式指定一个约束列表:

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

相关问题 更多 >