Python 使用Django ORM将JSON数据转换为SQL数据库中的结构化数据
我正在使用Django和MySQL后端构建一个聊天机器人。 我有一个Python 使用Django ORM将JSON数据转换为SQL数据库中的结构化数据,python,django,database-design,Python,Django,Database Design,我正在使用Django和MySQL后端构建一个聊天机器人。 我有一个ChatSession模型,它表示聊天会话结束后要存储的所有有用信息 现在,它有一个名为cc\u data的JSON字段(使用实现) 以下是该字段内容的示例: { "slots":{ "chal_tech":"What is the Proof", "nats":["I will fail the course","Nobody likes me"], "distortion":"Jumping to
ChatSession
模型,它表示聊天会话结束后要存储的所有有用信息
现在,它有一个名为cc\u 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个聊天会话中的所有nat
似乎将JSON的所有值读入DICT,然后搜索/操作它们是低效的。因此,我试图将此JSON表示转换为Django ORM模型(SQL)
然而,在尝试这样做时,我遇到了一个问题。slot
字典中的“键”数量可能是有限的,但我不知道此时需要多少键。无论如何,这将是一个很大的数字(大约50-100)
- 手动为
models.py中的这么多属性编写模型类似乎效率低下,而且有点重复(大多数模型都只有一个
或JSONfield
)。即使使用抽象模型,我仍然必须列出TextField
文件中所有“键”的类models.py
- 理想情况下,我希望自动动态地为任何新的“关键点”生成模型类。我确实看过,但没有一个解决方案看起来真的有效。我使用的主机不支持NoSQL,因此我无法使用该解决方案
如何将其转换为有效的Django ORM/SQL设计,以使查询高效且代码不重复?为Django选择一个新模型,或者使用PostgreSQL,为什么要为新密钥生成新模型?有对象FK、种类(插槽名称)和内容(不管您喜欢什么,文本或json)的模型就足够了吗?@awesoon这就是我想做的。然而,有一点需要注意的是,如果槽的内容是JSON本身,我需要搜索其中的键,那么我再次遇到同样的问题。为Django选择一个,或者使用PostgreSQL,为什么要为一个新键生成一个新模型?有对象FK、种类(插槽名称)和内容(不管您喜欢什么,文本或json)的模型就足够了吗?@awesoon这就是我想做的。然而,有一点需要注意,如果槽的内容是JSON本身,并且我需要搜索其中的键,那么我再次遇到同样的问题。