我需要将实例(或至少它们的状态)存储在数据库中。我的想法是,我应该能够按需重新创建实例。由于我定义了类,我可以选择存储数据的方式。
考虑下图,继承图:
A
/ \
B C
/\ /\
D E F ...
这个想法是实例可以属于这些类中的任何一个,并且它本身可以存储其他对象(我完全可以设计控制)。
我的第一个想法是将状态专门存储在字典中,将字典转储到json中并将其存储在数据库中。在运行时,从数据库加载json将其转换为字典,创建一个传入字典的对象,以获取设置等等......
我不确定这是否是一种好方法,以及是否还有其他可能出现的问题。我已经遇到过一个,如果你使用myobj.dict,你实际上并没有获得所有类的父级属性...
有什么建议吗?
答案 0 :(得分:2)
有几种方法。我真的不认为我们可以从您提供的信息中告诉您最适合您的方法。
这些是我能想到的方法。只有您可以确定哪一个最符合您的要求和意图。
答案 1 :(得分:2)
shelve module是开始存储可通过密钥检索的实例的最简单方法。它会为您自动进行pickle和unpickles,并负责读取和写入文件。
答案 2 :(得分:0)
我的建议是在你的州周围设计一个Object模型,并使用一个用于Python的ORM工具包。这里提到了几个 - What are some good Python ORM solutions?
我认为最好重新发明轮子。您可以使用ORM工具包来存储状态或实际的对象实例树本身。