使用Django ORM将JSON数据转换为SQL数据库中的结构化数据

2024-05-21 01:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Django和MySQL后端构建一个聊天机器人。 我有一个ChatSession模型,它表示聊天会话结束后要存储的所有有用信息。你知道吗

现在,它有一个名为cc_data的JSON字段(使用^{}实现)

下面是该字段内容的示例:

{
  "slots":{
    "chal_tech":"What is the Proof",
    "nats":["I will fail the course","Nobody likes me"],
    "distortion":"Jumping to Conclusions",
    "user_name":"parth",
  }
}

我最近意识到我需要查询这个slots字典中的一些字段。一个示例查询是列出最近10个聊天会话中的所有nats。你知道吗

似乎将json的所有值读入dict中,然后搜索/操作它们将是一件非常困难的事情效率低下。因此我试图将这个JSON表示转换成Django ORM模型(SQL)。你知道吗

然而,在尝试这样做时,我遇到了一个问题。slots字典中的“键”可能是有限的,但我不知道此时需要多少键。无论如何,这将是一个很大的数字(大约50-100)。你知道吗

  • models.py中的这么多属性手动编写模型类似乎效率低下,而且有点重复(其中大多数只会有一个JSONfieldTextField)。即使使用抽象模型,我仍然必须列出models.py文件中所有“键”的类。你知道吗
  • 理想情况下,我希望为任何新的“键”自动地、动态地生成模型类。我确实看过dynamic models in Django,但没有一个解决方案看起来真的有效。我使用的主机不支持NoSQL,因此我无法使用该解决方案。你知道吗

如何将其转换为有效的Django ORM/SQL设计,以便查询高效,代码不重复?你知道吗


Tags: thedjangopy模型json示例sql字典