database - 关于在 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)
像这样的东西。
对于每张地图,可以有几个不同的小怪。每张地图都可以有一个生物
解决方案
外键(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")
推荐阅读
- node.js - Angular从dom中的api调用执行html类型响应?
- python - 酥脆的表单选项卡有两个相同的名称
- laravel - Laravel 知道函数内部的变量,但不知道返回
- java - 如何以及何时在 Java 中使用 Kotlin 密封类?
- javascript - 禁用非选定 div 元素内的输入字段
- ubuntu - Ubuntu 20.04.2.0 LTS 上的 Python3.9.6、Pip 和 Virtualenv
- node.js - Laravel 与提示问题混合
- python-asyncio - asyncio.wait() 上的 tqdm 进度条
- python - 删除包含值的行,Pandas DataFrame
- sql - 前两天选择多行?