Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';在关系数据库中存储一组简单的字典条目时,最佳做法是什么?_Python_Sql_Flask_Database Design_Sqlalchemy - Fatal编程技术网

Python 什么';在关系数据库中存储一组简单的字典条目时,最佳做法是什么?

Python 什么';在关系数据库中存储一组简单的字典条目时,最佳做法是什么?,python,sql,flask,database-design,sqlalchemy,Python,Sql,Flask,Database Design,Sqlalchemy,这是我正在处理的数据的简化版本 { "name": "Sinistrofu Cloak", "itemType": "Cloak", "level": "200", "stats": [ { "stat": "Vitality", "minStat": 251, "maxStat": 300 }, { "stat": "Strength", "min

这是我正在处理的数据的简化版本

{
    "name": "Sinistrofu Cloak",
    "itemType": "Cloak",
    "level": "200",
    "stats": [
      {
        "stat": "Vitality",
        "minStat": 251,
        "maxStat": 300
      },
      {
        "stat": "Strength",
        "minStat": 71,
        "maxStat": 100
      },
      {
        "stat": "Wisdom",
        "minStat": 16,
        "maxStat": 25
      }
}
这是我的简化模型:

class ModelItem(Base):
    __tablename__ = 'item'

    id = Column('id', UUID(as_uuid=True), unique=True, nullable=False, primary_key=True)
    name = Column('name', String, nullable=False)
    item_type = Column('item_type', String, nullable=False)
    level = Column('level', Integer, nullable=False)
    stats = Column('stats', JSON)
大多数字段以及它们如何转换到我的数据库中是不言而喻的。我真的很好奇我应该如何构建
stats
列。以JSON格式存储会更好,还是更适合创建一个新的
stat
模型,并为其创建一个新表,用外键链接回
模型


对我来说,这样做似乎有点不必要,但作为一个新手,这可能有好处,因为我还不了解

在我看来,你应该用外键创建第二个统计表。这是在SQL中执行此操作的标准方法,允许您稍后根据项目的统计信息筛选项目(例如,如果您正在查找具有特定生命力的项目,这可能会很有用)

SqlAlchemy还允许您创建关系,这样当您获得
ModelItem
时,就可以立即启动整个结构,而无需单独查询或解析这些统计信息或JSON


现在制作第二个模型所需的额外工作是值得的,这样以后您就可以用最小的努力获得完整的对象层次结构。

我想让我质疑是否这样做的是数据的本质。在我看来,一个
stat
似乎不太复杂,也不太清楚,不足以保证制作另一个模型。对我来说,这似乎是一个更大数据类型的一个方面,它是一个项目的所有集合统计数据。如果那样的话sense@SamL虽然从业务角度来看,
stat
可能无法保证模型的可靠性,但从技术角度来看,您不应该(也可能无法)将
stat
条目存储为JSON。例如,MySQL不支持JSON作为本机数据类型(请参阅),因此您将它们存储在文本字段中。这使得事情变得更加复杂。啊,我使用的是支持JSON的postgres。很高兴知道它不是所有RDBMS的一个特性。知道这一点肯定有助于水泥为数据制作另一个表格。谢谢你的洞察力