You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:32:08