如何将SQLAlchemy中外键关联写法转换为Peewee实现?
Peewee中实现类似SQLAlchemy的字段关联
你给出的SQLAlchemy代码是定义一个关联到parent.id的外键字段:
parent_id = Column(Integer, ForeignKey("parent.id"))
在Peewee中,有两种常见的实现方式:
1. 推荐方式:使用ForeignKeyField
Peewee的ORM提供了专门的ForeignKeyField来处理外键关联,它会自动处理字段类型和外键约束,同时还能提供ORM层面的关联查询能力:
from peewee import Model, ForeignKeyField, SqliteDatabase # 先定义Parent模型 db = SqliteDatabase('example.db') class Parent(Model): # Parent模型的字段,默认会生成自增主键id class Meta: database = db table_name = 'parent' class Child(Model): # 关联到Parent模型,自动对应parent表的id字段 parent_id = ForeignKeyField(Parent, backref='children', column_name='parent_id') class Meta: database = db table_name = 'child'
2. 手动定义整数字段加外键约束
如果你想更贴近SQLAlchemy的写法,手动定义整数字段并添加外键约束,可以这样写:
from peewee import Model, IntegerField, SQL, SqliteDatabase db = SqliteDatabase('example.db') class Child(Model): parent_id = IntegerField(constraints=[SQL('REFERENCES parent(id)')]) class Meta: database = db table_name = 'child'
第一种方式更符合Peewee的ORM设计,能充分利用关联查询、反向引用等特性,推荐优先使用。
内容的提问来源于stack exchange,提问作者Dorius Kornely
相关产品推荐
相关产品推荐

