首页 > 解决方案 > 关于在 sqlalchemy 中制作模型的问题

问题描述

我很困惑是否为每个类使用关系或外键。

我正在制作这样的模型:

class Map(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    map_name = db.Column(db.String(200))

class Mob(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    mob_name = db.Column(db.String(200))
    level = db.Column(db.Integer)

像这样的东西。

对于每张地图,可以有几个不同的小怪。每张地图都可以有一个生物

标签: databaseflask-sqlalchemy

解决方案


外键(FK)
是数据库中的一列,本身与ORM无关。

关系
是一种 ORM 事物,它有助于操作对象/数据。

它显示在官方文档中。

一个假设你想要一个(地图)对多(Mobs)的关系。在这种情况下,您可能需要:

  • Mob 有 Mob.map_id FK
    map_id = Column(Integer, ForeignKey('maps.id'))

  • Map 与 Mobs 有关系,可作为属性 Map.mobs [Mob 对象列表] 访问
    mobs = relationship("Mob")

  • Mob 与 Map 有关系,可作为属性 Mob.map [Map object] 访问,
    最简单的方法是将代码从上面的答案更改为
    mobs = relationship("Mob", back_populates="map")


推荐阅读